私は以下を使用して画像の解像度を変更する複数の方法を見つけましたconvert
:
-sample
-resample
-scale
-resize
-adaptive-resize
-thumbnail
それらの違いは何ですか?
アスペクト比が固定されたさまざまなサイズの大きな画像のサムネイルを作成する必要がある場合(トリミングが必要)-私の最良の選択は何ですか?
私は以下を使用して画像の解像度を変更する複数の方法を見つけましたconvert
:
-sample
-resample
-scale
-resize
-adaptive-resize
-thumbnail
それらの違いは何ですか?
アスペクト比が固定されたさまざまなサイズの大きな画像のサムネイルを作成する必要がある場合(トリミングが必要)-私の最良の選択は何ですか?
回答:
サイズ変更
-resize 400x300+20+30
(以下の-scale
および-sample
例のように)入力を、ピクセル寸法が400x300
。の出力画像に変換します。また、出力を右に20ピクセル、下に30ピクセルシフトします。さらに、以下にはさらにいくつかの違いがあり-scale
ます。
-resize
-filter
(!を使用する前にコマンドラインで実行する必要があります)の追加設定をサポートし-resize
ます。
-filter
拡大の場合は追加されたピクセルの色に使用される正確なアルゴリズムを決定し、縮小の場合は隣接するピクセルの一部が削除されたときに残りのピクセルに使用される色を決定します。
サポートされているフィルターのリストについては、を実行するだけconvert -list filter
です。
-filter point -resize 400x300
とまったく同じ結果が生成されます-sample 400x300
が、実行速度は少し遅くなります。
(前に)一緒に設定されていない場合-resize
、変換はサイレントにデフォルト-filter Lanczos
で遅くなりますが、生成される-filter point
(最も近いものを使用する)よりもはるかに優れた品質が生成されます(新しく追加されたピクセルの周囲のすべてのピクセルの色が考慮されるため)新しく追加されたピクセルの色を決定するための隣接ルール)。
サンプル
-sample 400x300
入力画像をのピクセル寸法を持つ出力画像に変換します400x300
。ただし、次の点にはいくつかの非常に重要な違いがあり-resize
ます。
-sample
-filter
;の追加設定はサポートしていません。とにかく設定されている場合-filter
は、単に無視されます。
拡大する場合(入力画像のサイズがよりも小さい場合があるため400x300
)、ピクセルはブロックで複製されます。
縮小する場合(入力画像サイズがより大きくなる可能性があるため400x300
)、ピクセルは非常に単純なアルゴリズムでサブサンプリングされます。一部の行と列は単純にスキップされます。
へのgeometry引数は、オフセット部分を-sample
サポートしていません(出力のオフセットディレクティブを尊重するとは異なります)。-resize
出力には、入力画像よりも多くの(異なる)色が含まれることはありません。ただし、色が少ない場合があります。
したがって-sample
、非常に高速(より高速-resize
)ですが、出力品質は(通常)悪化します。結果の出力で極端なブロッキングおよびエイリアシング効果を簡単に得ることができます。
の重要な機能の1つ-sample
は、元の画像の一部の色が消える場合でも、新しい画像に新しい色が含まれないことです。
リサンプル
-resample
ターゲット画像のピクセルジオメトリではなく、目的のXxY
解像度をパラメータとして使用します。この演算子の目的は、画像のレンダリングサイズを保持することです。300DPIでレンダリングするデバイスで、画像のサイズが4インチx3インチであると想定します。次に、またはを要求すると、72 DPIデバイスで(再び)4インチx3インチになるように画像のサイズが変更されます。XxY
-resample 72
-resample 72x72
この操作は、メタデータにすでに目的の解像度が保存されている画像に対してのみ機能します(すべての画像形式が画像解像度の概念をサポートしているわけではありません-JPEG、PNG、TIFFがサポートしています)。
ソース画像が画像解像度の内部サポートが欠落している形式である場合、画像の(想定される)元の解像度は、解像度を指定する前に-density
コマンドラインで指定する必要があります。-resample
規模
-scale 400x300
を使用する場合と同等の結果を生成します(ただし、すべてのフィルター処理を回避するため、より高速です)-filter box -resize 400x300
。また、現在の-filter
設定を完全に無視します。
縮小すると、それぞれの入力ピクセルの色を平均してピクセルの色を置き換えるだけで画像サイズが変更されます。
拡大するときは、必要な追加ピクセルのそれぞれの入力ピクセルを単純に複製します。
アダプティブサイズ変更
-adaptive-resize 400x300
ジオメトリパラメータのオフセット部分をサポートしていません(または設定されている場合は無視します)。また、存在する場合は設定を無視します。-gravity
-filter [something]
)。サムネイル
-thumbnail
-resize
いくつかの違いはありますが、同じように機能します。
速度が最適化されています。
また、埋め込まれたカラープロファイルを削除して、サムネイルのファイルサイズを縮小します。
次の回答は、-resize
ディレクティブのいくつかの(図解された!)例を示しています。各図は、正確なサイズ変更方法の「詳細」に応じて、異なる結果を示しています。