web-dev-qa-db-ja.com

ImageMagickを使用した正方形のサムネイル(変換)?

ImageMagickを使用して正方形/トリミングされたサムネイルを作成する方法以下のようなトリミング。

cropping

32
marioosh

これについては、ImageMagickの公式ドキュメントで 「サムネイルを縮小して合わせる」 で説明されています。

別の方法としては、画像をパディングして特定のサムネイルサイズに合わせるのではなく、最終的なサイズに合わない画像の部分を切り捨てます。

もちろん、これは実際には元の画像の一部、特に画像のエッジが失われることを意味しますが、結果として画像の中央部分のサムネイルが拡大されます。これは通常(常にではありませんが)画像の主要な主題なので、サムネイルを作成する実用的な方法です。

IM v6.3.8-3以降、これを簡単にするために、特別なサイズ変更オプションフラグ「^」が追加されました。このフラグを使用してサイズを変更し、目的のサイズからオーバーフローする画像の部分を切り取ります。

そして、例のコマンドのコンテキストでは:

convert -define jpeg:size=200x200 hatching_orig.jpg  -thumbnail 100x100^ \
          -gravity center -extent 100x100  cut_to_fit.gif

Ignacioは正しいドキュメントにリンクしていますが、便宜上ここにインラインで貼り付けます。

convert -define jpeg:size=200x200 original.jpeg  -thumbnail 100x100^ -gravity center -extent 100x100  thumbnail.jpeg

同様に、次はGraphicsMagickの場合です。

gm convert -size 200x200 original.jpeg -thumbnail 100x100^ -gravity center -extent 100x100 +profile "*" thumbnail.jpeg

説明:

  • -size 200x200は、JPEGデコーダにこの解像度のみが必要であることを伝え、メモリを節約し、ソース画像をより速く読み取ることができます。
  • -thumbnail 100x100^最短の辺を100にする高速リサイズ
  • - gravity center次の操作を中央揃え
  • -extent 100x100 100x100のキャンバスに画像を適用します
  • +profile "*"メタ情報をjpegに保存しません(結果の画像を小さくします)
55
Jonah Braun

それはそれを行う最も簡単な方法です:

次のコマンドは、小さい方の辺のサイズを100ピクセルに変更し、100x100の正方形をトリミングします。 -stripコマンドを使用して、ファイルサイズを縮小します。

convert original.jpg -resize "100^>" -gravity center \ 
                     -crop 100x100+0+0 -strip thumbnail.jpg

他とは異なり、それはメモリを節約しようとはしていません。代わりに、それはあなたが望むものを実行し、それ以上は実行しません。さらに、それは画像をアップスケールしません。

11
Reinaldo Guedes

正確なサイズのサムネイルを生成するためにgraphicsmagickを使用していますが、オーバーハングをトリミングする代わりに、チェッカーボードで画像をパディングしています。

gm convert -limit Threads 1 -size 320x180 pattern:checkerboard -background transparent -gravity center -resize 320x180 -extent 320x180 original.jpg -flatten -resize 112x65! -interlace Line 1 thumb_112x65.jpg

オプションの説明。

gm convert

// Single threaded seems faster on smaller files
-limit Threads 1 

// Generate a checkerboard of size 320x180.
// Sets the relative size of the checkerboard squares,
// also sets the desired aspect ratio. In my case (16:9)
-size 320x180 pattern:checkerboard 

// Resize the input image and center it on a transparent layer.
-background transparent -gravity center -resize 320x180 -extent 320x180 orig.jpg

// Merge the layers
-flatten 

// Resize the output to the desired
// The ! causes the aspect ratio to be ignored, fixing any rounding errors.
// (Specify a size with the same aspect ratio as the checkerboard.)
-resize 112x65! 

// Use Progressive JPEG Encoding
-interlace Line 

// Output Image
thumb_112x65.jpg
2
Ryan Williams

私はあなたが次のようなものを探していると思います:

convert -crop 100x100+50+50 input_image.jpg output_image.jpg 

どこ 100x100は、最終的な長方形のsizeであり、50x50オフセット

1
pconcepcion

このコマンドは、正方形にトリミングしてから、150x150にサイズ変更します

convert 824-full.jpg -set option:size '%[fx:min(w,h)]x%[fx:min(w,h)]' xc:none +swap -gravity center -composite -resize 150x150  temp.jpg

その他のオプションはこちらから入手できます: http://www.imagemagick.org/Usage/thumbnails/#square

1
michaelbn