ImageMagick(GraphicsMagick)でPNGのキャンバスサイズを変更するにはどうすればよいですか?(透明度を埋める方法は?)


9

別の方法:非正方形​​のPNGを取り、画像の「残りの部分」を透明度で「塗りつぶして」、結果の正方形の画像が正方形の中央に配置されるようにするにはどうすればよいですか?

最終的に、私が欲しいのは、GMがサポートする任意のサイズの任意のサイズの画像を取得し、アスペクト比を維持し、非正方形の場合は透明度をパディングして、縮小されたPNG(たとえば、いずれかの次元で最大40ピクセル)を作成することです元の画像、および既に準備されている40x40のPNG透明マスクが適用されています。

私はすでに縮小して縦横比を維持する方法を知っています。コンポジットを適用するコマンドはすでにあります。私の唯一の欠けている部分は、正方形に対応する非正方形の画像です(透明度のあるパディング)。

単一のコマンドをお勧めします。受け入れ可能なマルチコマンドチェーン。

(編集)

追加情報:これが私が使用している複合コマンドです:

gm composite -compose copyopacity mask.png source-and-target.png source-and-target.png

ここで、mask.pngには、source-and-target.pngの保持したいものには白いピクセルがあり、source-and-target.pngの削除(そして透明にしたい)したいものには透明なピクセルがあります。

回答:


7

このコマンドは、任意のサイズの入力ファイルを受け取り、40x40の正方形に最適に適合し、透明度を追加します。

convert \
   original.png \
  -thumbnail '40x40>' \
  -background transparent \
  -gravity center \
  -extent 40x40 \
  -compose Copy_Opacity \
  -composite mask.png \
   original-resized.png

このgravityオプションにより、画像が両方向の中央に配置され、transparentピクセルがない場所で使用されます。次に、合成はmask.png


だから私たちはそれを一度に行うことはできませんcompositeか?
ピスト

@Pistosコンポジットで何をしているのか明確ではありません-これは、サイズ変更後にサムネイルの一部を非表示/表示するための単なる透明マスクですか?これまでに持っているコマンドシーケンスを編集して追加できますか?
ポール、

@Pistos最善のアプローチは、逆の方法ではなく、-convertで合成を行うことだと思います。上記の回答を更新しました。
ポール、

近いですが、かなりではありません。コマンドはそのままでは機能せず、調整を行っても機能しませんでした。大丈夫です、私は2つのステップでそれをします。最後に機能するCLI手順が得られたら、ここで更新します。再度、感謝します。
ピストス2012

私の経験から、通常はより高品質の画像が生成されるため-filter Catromthumbnailオプションの前に追加します。
thdoan 2013

6

1つのフォルダーからすべてのPNGを変換する1つのコマンド:

mogrify \
 -resize 50x50 \
 -background transparent \
 -gravity center \
 -extent 50x50 \
 -format png \
 -path resized \
 *.png

mogrifyはImageMagickパッケージのコマンドです。最初に出力ディレクトリを作成する必要があります。


良いですね。ところで、冒険したい場合は-path resized、所定の場所でファイルを編集することを省略できます。
aaronk6

これは素晴らしい。私のインストール(OSX、1.3.35)それの上gm mogrify、代わりの-path resized、使用-create-directories -output-directory resized
ブレイク

1

これが私が最終的に行ったことです。2ステップのプロセス:

gm convert \
  -thumbnail '40x40>' \
  -background transparent \
  -gravity center \
  -extent 40x40 \
   original.png \
   intermediate.png

gm composite \
  -compose in \
   intermediate.png \
   mask.png \
   out.png

ここで、mask.pngは私が保持したいものの白いピクセルであり、マスクしたい(破棄する)ものの透明なピクセルです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.