綾小路龍之介の素人思考

[imagemagick] 画像ファイルを連結|結合する

4 枚の図を 1 つの図にまとめるには montage を使う。

4 枚の図のデータは以下のような感じ。

$ identify fig1-*
fig1-a.jpg JPEG 3264x2448 3264x2448+0+0 8-bit DirectClass 1.547MB 0.000u 0:00.000
fig1-b.jpg[1] JPEG 3264x2448 3264x2448+0+0 8-bit DirectClass 1.516MB 0.000u 0:00.000
fig1-c.jpg[2] JPEG 3264x2448 3264x2448+0+0 8-bit DirectClass 1.323MB 0.000u 0:00.000
fig1-d.jpg[3] JPEG 3264x2448 3264x2448+0+0 8-bit DirectClass 1.533MB 0.000u 0:00.000

これらを 1 枚の図にまとめるには montage を使う。以下のようにすることで、j

$ time montage -tile 2x2 -geometry 50% fig1-?.jpg fig1.jpg

real    8m35.769s
user    0m36.154s
sys     0m7.816s
$ identify fig1.jpg
fig1.jpg JPEG 1632x1224 1632x1224+0+0 8-bit DirectClass 500KB 0.010u 0:00.000

このようにするほうが圧倒的に速い。

$ time convert -geometry 25% fig1-a.jpg fig1-a_.jpg

real    0m6.096s
user    0m5.760s
sys     0m0.236s
$ time convert -geometry 25% fig1-b.jpg fig1-b_.jpg

real    0m6.024s
user    0m5.656s
sys     0m0.332s
$ time convert -geometry 25% fig1-c.jpg fig1-c_.jpg

real    0m6.018s
user    0m5.496s
sys     0m0.472s
$ time convert -geometry 25% fig1-d.jpg fig1-d_.jpg

real    0m6.139s
user    0m5.740s
sys     0m0.272s
$ time montage -tile 2x2 -geometry 100% fig1-?_.jpg fig1_.jpg

real    0m1.721s
user    0m1.484s
sys     0m0.228s
$ identify fig1_.jpg
fig1_.jpg JPEG 1632x1224 1632x1224+0+0 8-bit DirectClass 437KB 0.000u 0:00.000

結果的に得られる画像の見た目はほとんど同じだし画像の解像度も同じだけど、cmp や diff で比較すると違うものであることが分かる。しかし libpuzzle で 2 つの画像同士の距離 (類似度) を計算してもらうと 0、つまり同じと判定される。

$ cmp fig1_.jpg fig1.jpg
fig1_.jpg fig1.jpg differ: byte 184, line 6
$ diff fig1_.jpg fig1.jpg
Binary files fig1_.jpg and fig1.jpg differ
$ puzzle-diff fig1_.jpg fig1.jpg
0

いちいち中間ファイルを作るのが面倒なので以下のようにすることもできる。これでも最初に比べたらいくらかまし。

$ time montage -geometry 25% fig1-?.jpg -tile 2x2 -geometry 100% fig1.jpg              
real    1m26.412s
user    0m23.893s
sys     0m3.120s
$ identify fig1.jpg
fig1.jpg JPEG 1632x1224 1632x1224+0+0 8-bit DirectClass 498KB 0.000u 0:00.019
$ puzzle-diff fig1_.jpg fig1.jpg
0

ソーシャルブックマーク

  1. はてなブックマーク
  2. Google Bookmarks
  3. del.icio.us

ChangeLog

  1. Posted: 2008-10-05T00:09:25+09:00
  2. Modified: 2008-10-05T00:09:25+09:00
  3. Generated: 2017-01-20T23:09:16+09:00