フォルダ内のBMPファイルのサイズを20%に縮小しつつ、JPG形式に変更します。変更後のファイル名は「img-000.jpg」といった形でナンバリングされます。
$ convert *.bmp -resize 20%x20% img-%03d.jpg
指定したファイル(foo.jpg)を100x100pxの枠に収まるようにリサイズして別のファイル(bar.jpg)に保存します。
$ convert foo.jpg -resize 100x100 bar.jpg
100x100より小さいサイズの画像を拡大したくない場合は、「>」を付けます。
$ convert foo.jpg -resize "100x100>" bar.jpg
上記処理をカレントディレクトリ以下の全てのjpgファイルに対して実施したい場合はfindコマンドと組み合わせて以下のように記述できます。
$ find . -name "*.jpg" -exec convert -resize 300x300 {} {} \\;
カレントディレクトリ内の全てのjpgファイルをグレースケール化するは-typeオプションを指定します。
$ find . -name "*.jpg" -exec convert -type grayscale {} {} \;
convert -strip foo.jpg bar.jpg
Check if the picture has geometric information.
identify -verbose bar.jpg | grep GPS
時計回りに90度回転させます。
convert -rotete 90 foo.jpg bar.jpg
周辺の余白を切り取ります。
convert -fuzz 20% -trim foo.jpg bar.jpg
ワイルドカードやfindコマンドでもある程度の自動化は可能ですが、もっと細かい条件を付けたい場合の スクリプトの例です。カレントディレクトリ内の.jpgファイルを変換してoutディレクトリに格納します。
# Converts image files in the directory.
BASEDIR="."
OUTDIR="./out"
CONVERT_OPTS="-fuzz 20% -trim -resize 640x640 -strip"
`mkdir -p #{OUTDIR}`
puts "Convert with: "+CONVERT_OPTS
Dir.entries(BASEDIR).each do |f|
src = BASEDIR+"/"+f
next unless File.file? src
next unless f.end_with? ".jpg"
dst = OUTDIR+"/"+f
puts f + " -> " +dst
cmd = "convert #{CONVERT_OPTS} #{src} #{dst}"
m = `#{cmd}`
if $? != 0 || !m.empty?
puts m
end
end
require "image_processing/mini_magick"
ImageProcessing::MiniMagick
.source("foo.jpg")
.resize_to_limit(800,800)
.call(destination: "bar.jpg")