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


回答:


19

これは、ImageMagickの公式ドキュメント「サムネイルを適切にカット」で説明されています。

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

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

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

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

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

7
おそらく...何らかのタイプの説明?
Hello71

イグナシオの空白の回答が大好き:-)
Ciro Santilli新疆改造中心法轮功六四事件

55

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に保存しない(結果の画像を小さくする)

3
コマンドライン(グラフィックマジック1)で使用すると、中央に画像が表示され、2つのサイドが白で塗りつぶされます。問題に記載されているものではありません。私は何か間違っていますか?
Umut Benzer

2
ウィンドウを使用している場合、エスケープするには^文字を2倍にする必要があります。例:-thumbnail 100x100 ^^
ジョージフィリパコス

3
100x100のサイズにしないのはなぜですか?
ハローワールド14年

@HelloWorld:「Imagemagick Geometry」をお読みください。グーグル、簡単に見つけられます。
saurabheights

11

それはそれを行うより簡単な方法です:

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

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

他とは異なり、メモリを節約しようとはしていません。代わりに、あなたが望むことをし、それ以上はしません。さらに、画像を高級化しません。


確立された回答を含む質問に遅い回答を追加する場合、他の回答と比べてあなたの回答がユニークで新しいものを提供する理由を十分に説明すると役立ちます。
ジェイソンアラ

2
おかげで、OPがこれについてまったく言及していないのに、他の人がなぜメモリを節約しようとして回答を過度に複雑にしたのか分かりません。
confused00

2

私は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

1

次のようなものを探していると思います:

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

ここ100x100サイズ最終矩形とのオフセット50x50


その切り抜き画像ですが、サムネイルは作成しません。
marioosh

1
@marioosh:理解できませんでした。convert -thumbnail 100x100+50+50 input_image.jpg output_image.jpg詳細情報については、Igancio Vazquezの回答を確認するか、ドキュメントを
pconcepcion

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