web-dev-qa-db-ja.com

GIFを変形せずにサイズ変更し、トリミングされたときに空白の白い領域を削除する方法は?

以下のgifの寸法は600 * 800です。高さは800ピクセルなので、下に削除したい空白がたくさんあります。

source gif: old.gif

これはold.gifとして保存されました:

file old.gif 
old.gif: GIF image data, version 89a, 600 x 800

変換コマンドでサイズ変更:

convert old.gif -coalesce temp.gif
convert -size 600x800 temp.gif -resize 600x400! new.gif

は、アスペクト比を無視し、アスペクト比を変更しないことを意味します。
結果は次のとおりです。

squashed gif

新しいファイルnew.gifは変形されます。

GIFを変形せずにサイズ変更するにはどうすればよいですか?

-crop引数での私の試み。

convert old.gif -crop 600x400+0+0 new.gif

cropped gif with whitespace

New.gifの空白領域を削除する方法は?

空白の白い領域は、Firefoxでは明らかです。 convert old.gif -crop 600x400+0+0 new.gifは、new.gifの空白の白い領域を削除できません。

gif in browser

repage引数を使用すると、空白の白い領域が削除されますが、gifがよりぼやけます。

convert old.gif -crop 600x400+0+0 -trim  +repage  new.gif    

blurry gif

1

使用する !に与えられた解像度の後-crop

convert old.gif -crop 600x400+0+0\! new.gif

enter image description here

imagemagick docs から:

ImageMagickバージョン6.2.4-5から、新しい特別フラグを「-crop "引数。このフラグ '! 'は、返された画像の仮想キャンバス情報をトリミングするようにトリミングするように指示します。

...

返された画像のキャンバスサイズが、画像がトリミングされた領域とどのように一致するかに注目してください。

3
Olorin