web-dev-qa-db-ja.com

ImageMagick変換のsample / resample / scale / resize / adaptive-resize / thumbnail演算子の違いは何ですか?

convertを使用して画像の解像度を変更する複数の方法を見つけました。

-sample
-resample
-scale
-resize
-adaptive-resize
-thumbnail

それらの違いは何ですか?

アスペクト比が固定されたさまざまなサイズの大きな画像サムネイルを作成する必要がある場合(トリミングが必要)-私の最良の選択は何ですか?

82
est

サイズ変更

-resize 400x300+20+30(以下の-scale-sampleの例のように)入力を400x300のピクセル寸法を持つ出力画像に変換します。また、出力を右に20ピクセル、下に30ピクセルシフトします。さらに、-scaleにはさらにいくつかの違いがあります。

  • -resizeは、-filterの追加の設定をサポートします(コマンドラインbefore-resize!を使用する必要があります)。

  • -filterは、拡大の場合に追加されたピクセルの色に使用される正確なアルゴリズム、または縮小の場合に隣接ピクセルの一部が削除されたときに残りのピクセルに使用される色を決定します。

  • サポートされているフィルターのリストについては、単にconvert -list filterを実行してください。

  • -filter point -resize 400x300は、-sample 400x300とまったく同じ結果を作成しますが、実行は少し遅くなります。

  • -resizeと共に(前に)設定しない場合、変換は-filter Lanczosに暗黙のうちにデフォルトで行われますが、-filter pointが生成する(これは、新しく追加されたピクセルの周囲のすべてのピクセルの色を考慮するため)nearest neighborルールを使用して、新しく追加されたピクセルの色を決定します)。

サンプル

-sample 400x300は、入力画像を、400x300のピクセル寸法を持つ出力画像に変換します。ただし、-resizeにはいくつかの非常に重要な違いがあります。

  • -sampleは、-filterの追加設定をサポートしていません。とにかく設定すると、-filterは単に無視されます。

  • 拡大するとき(入力画像のサイズが400x300より小さい可能性があるため)、ピクセルはブロック単位で複製されます。

  • 入力画像のサイズが400x300よりも大きくなる可能性があるため)縮小する場合、ピクセルは非常に単純なアルゴリズムでサブサンプリングされます。一部の行と列は単純にスキップされます。

  • -samplegeometry引数は、offset部分をサポートしていません(offsetディレクティブを尊重する-resizeとは異なります) )。

  • 出力には、入力画像よりも多くの(異なる)色が含まれることはありません。ただし、色が少ない場合があります。

  • したがって、-sampleは非常に高速です(-resizeよりも高速)-しかし、出力品質は(通常)悪化します:極端な blocking および aliasing の結果を簡単に得ることができます。

  • -sampleの重要な機能の1つは、新しい画像には新しい色が含まれないことですが、元の画像の一部の色は消えることがあります。

resample

-resampleはパラメーターとして目的のXxYを使用しますresolutionXxYピクセルではなくgeometryターゲットイメージ。この演算子の目的は、画像のrenderedサイズを保持することです。画像が300 DPIでレンダリングするデバイスで4インチx 3インチであると想定します。次に、-resample 72または-resample 72x72を要求すると、72 DPIデバイスで(再び)4インチx 3インチのサイズになるようにイメージのサイズが変更されます。

  • この操作は、メタデータに目的の解像度が既に保存されている画像に対してのみ機能します(すべての画像形式が画像解像度の概念をサポートしているわけではありません-JPEG、PNG、およびTIFFはサポートしています)。

  • ソース画像が画像解像度の内部サポートが欠落している形式である場合、画像の(想定される)元の解像度は、コマンドラインprior-densityを介して指定する必要があります-resample解像度。

スケール

-scale 400x300は、-filter box -resize 400x300を使用する場合と同等の結果を生成します(ただし、すべてのフィルター処理が回避されるため、高速になります)。また、現在の-filter設定を完全に無視します。

  • 縮小するときは、それぞれの入力ピクセルの色を一緒に平均してピクセルの色を置き換えるだけで画像サイズを変更します。

  • 拡大する場合、必要な追加ピクセルのそれぞれの入力ピクセルを単純に複製します。

adaptive-resize

-adaptive-resize 400x300は、gesetパラメータのoffset部分をサポートせず(設定されている場合は無視します)、-gravity設定も無視します存在する場合。

  • サイズ変更時にデフォルトで data-dependent triangulation を使用します(-filter [something]を追加指定してサイズ変更メソッドをオーバーライドしない限り)。

サムネイル

-thumbnailは、いくつかの違いを除いて、-resizeと同じように機能します。

  • 速度が最適化されています。

  • また、埋め込まれたカラープロファイルを削除して、サムネイルのファイルサイズを小さくします。


次の回答は、-resizeディレクティブのいくつかの(図解!)例を示しています。各図は、正確なサイズ変更方法の「詳細」に応じて、異なる結果を示しています。

129
Kurt Pfeifle

Ciro Santilliによると、新疆改造中心六四事件法轮功:

サンプル画像がある場合、これはさらに完璧になります:-)

-resize

google play with -resize (8.0 kB)

-sample

-sample (2.2kB)

-scale

-scale (7.0 kB)

-adaptive-resize

enter image description here (4.3 kB)

1
serv-inc