ImageMagickでリサイズする方法
概要
ImageMagickでリサイズする方法を調べてみた。
INPUT.JPGをリサイズする
Resize Operator
# Preserve Aspect Ratio convert -resize WIDTHxHEIGHT INPUT.JPG OUTPUT.JPG convert -resize WIDTHx INPUT.JPG OUTPUT.JPG convert -resize xHEIGHT INPUT.JPG OUTPUT.JPG
アスペクト比を維持してリサイズするには、オプション-resizeをつければ良い。
WIDTHとHEIGHTの両方をを指定した場合は、小さいほうに合わせてリサイズされる。
数値だけを入れた場合、単位はピクセル。
縮小率で指定したい場合は数値の後ろに%をつける。
例えば、横幅を4000pxから800pxに変更したいときは、
-resize 800xとするか、-resize 20%xとすればよい。
Optional flag
# Ignore Aspect Ratio convert -resize WIDTHxHEIGHT! INPUT.JPG OUTPUT.JPG # Only Shrink Larger Images convert -resize WIDTHxHEIGHT > INPUT.JPG OUTPUT.JPG
「!」をつけるとアスペクト比は維持されなくなる。
「>」をつけると指定サイズよりも大きい場合のみ縮小される。 小さいものを大きくしたい場合は「<」をつける。 「>」や「<」は特殊文字なので、 shellの場合には「¥>」、window batchの場合には「^>」とする。
Other Resize Operators
convert -thumbnail WIDTHxHEIGHT INPUT.JPG OUTPUT.JPG convert -scale WIDTHxHEIGHT INPUT.JPG OUTPUT.JPG convert -sample WIDTHxHEIGHT INPUT.JPG OUTPUT.JPG
thumbnail operatorはサブネイル画像をつくるためoperator。
Very very largeな画像を縮小するときに使うのが良いらしい。
-resizeと異なるのは、画像のプロパティ(撮影したカメラの情報や撮影場所など)
を取り除いたあとにgeometryを縮小するところ。
-resizeよりも速いらしい。
でも、jpegではあまり効果はないらしい。
scale operatorは、長方形のaveraged pixels でリサイズする。
-resizeよりも簡易で速い。
Box filter での-resizeと似ているが、-resizeとアルゴリズムが異なる。
精度はこちらのほうが良いらしい。
Box filterはaveraged pixelsを生成しないので、この点ではTriangle filterに近いらしい。
ぼかし画像の作成にもつかえる。
一番右(e)がそれ。
まとめ。
-filter box -resizeを使うなら-scaleのほうが速くて、精度が良い。
-scale VALAUE -scale WIDTHxHEIGHTでモザイク画像も作成できる。
v6.4.7まではバグが存在する。
(a) | (b) | (c) | (c) | (e) |
---|---|---|---|---|
Original | -resize 200x | -scale 200x | -filter box -resize 200x | -scale 30% -scale 200x |
sample operatorは、最も速いリサイズoperator。
最も速い理由は、
pixelsを複製して付け足したり、取り除いたりするだけで、
新しいpixelsを作らないから。
Resizing Techniues
Unsharped Resizing
convert INPUT.JPG -unsharp -reize WIDTHxHEIGHT OUTPUT.JPG convert INPUT.JPG -unsharp RADIUS -resize WIDTHxHEIGHT OUTPUT.JPG convert INPUT.JPG -unsharp RADIUSxSIGMA{+GAIN}{+THRESHHOLD} -resize WIDTHxHEIGHT OUTPUT.JPG
unsharpeをつけるともやもやしている画像がシャープになり、 劇的にみやすくなるのでおすすめである。
パラメータ | 説明 |
---|---|
RADIUS | Gaussian半径。単位はpx。デフォルトは0。 |
SIGMA | Gaussianの標準偏差。単位はpx。デフォルトは1.0。 |
GAIN | よくわからない。デフォルトは1.0。 |
THRESHOLD | QuantumRange の断片の閾値。デフォルトは0.05。 |
RADIUSの値は0に設定すると適当な値に調節してくれるようです。
GAINはさっぱり不明。
THRESHOLDの説明文の中にあったQuantumRangeもわかりそうでわからない単語。
よくわからないことだらけであるが、重要なのは設定値。
GIMPは-unsharpのデフォルトとして-unsharp 12x6+0.5+0を採用している。
Image Magick Forumによれば、画像が500pixels以上のときは-unshap 0x0.75+0.75+0.008が良い。
Open Photography Forumによれば、-unsharp 1.5x1+0.7+0.02がおすすめだそうです。
参考文献
- Resizing or Scaling -- IM v6 Examples
- ImageMagick: Command-line Options
- what the difference of sample/resample/scale/resize/adaptive-resize/thumbnail ImageMagick convert? - Stack Overflow
- http://bullard.esc.cam.ac.uk/~taylor/Doc/imagemagick/docs/ImageMagick.pdf
- ImageMagick - COBALT
- http://mikio.hatenablog.com/entry/2013/02/13/233525