convert
を使用して画像の解像度を変更する複数の方法を見つけました。
-sample
-resample
-scale
-resize
-adaptive-resize
-thumbnail
それらの違いは何ですか?
アスペクト比が固定されたさまざまなサイズの大きな画像サムネイルを作成する必要がある場合(トリミングが必要)-私の最良の選択は何ですか?
サイズ変更
-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
よりも大きくなる可能性があるため)縮小する場合、ピクセルは非常に単純なアルゴリズムでサブサンプリングされます。一部の行と列は単純にスキップされます。
-sample
のgeometry引数は、offset部分をサポートしていません(offsetディレクティブを尊重する-resize
とは異なります) )。
出力には、入力画像よりも多くの(異なる)色が含まれることはありません。ただし、色が少ない場合があります。
したがって、-sample
は非常に高速です(-resize
よりも高速)-しかし、出力品質は(通常)悪化します:極端な blocking および aliasing の結果を簡単に得ることができます。
-sample
の重要な機能の1つは、新しい画像には新しい色が含まれないことですが、元の画像の一部の色は消えることがあります。
resample
-resample
はパラメーターとして目的のXxY
を使用しますresolution、XxY
ピクセルではなく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
設定も無視します存在する場合。
-filter [something]
を追加指定してサイズ変更メソッドをオーバーライドしない限り)。サムネイル
-thumbnail
は、いくつかの違いを除いて、-resize
と同じように機能します。
速度が最適化されています。
また、埋め込まれたカラープロファイルを削除して、サムネイルのファイルサイズを小さくします。
次の回答は、-resize
ディレクティブのいくつかの(図解!)例を示しています。各図は、正確なサイズ変更方法の「詳細」に応じて、異なる結果を示しています。