web-dev-qa-db-ja.com

コマンドラインで画像をマージする方法は?

CSS Sprite テクニックを試して、いくつかのサムネイルを単一の画像としてロードしたいと思います。そのため、サーバーでオフラインで単一ファイルのいくつかのサムネイルを「マージ」する必要があります。

同じサイズのサムネイルが10個あるとします。 Linuxコマンドラインからそれらを「マージ」することをどのように提案しますか?

90
Michael

CSSスプライトの作成に最適な ImageMagic を試すこともできます。それに関するいくつかのチュートリアル ここ

例(垂直スプライト):

convert image1.png image2.png image3.png -append result/result-Sprite.png

例(水平スプライト):

convert image1.png image2.png image3.png +append result/result-Sprite.png
163
Petr Mensik

GraphicsMagick を使用することもできます。これは、ImageMagickのより軽量で高速なフォークです。

gm convert image1.png image2.png -append combined.png

12個の画像のマージの簡単な時間比較:

time convert image{1..12}.jpg -append test.jpg

real    0m3.178s
user    0m3.850s
sys     0m0.376s

time gm convert image{1..12}.jpg -append test.jpg

real    0m1.912s
user    0m2.198s
sys     0m0.766s

GraphicsMagickはImageMagickのほぼ2倍の速度です。

24
tjanez

Netpbm-packageのpnmcatを使用します。

入力ファイルを使用するには、おそらく入力ファイルを前後に変換する必要があります。

pnmcat -lr <(pngtopnm 1.png) <(pngtopnm 2.png) | pnmtopng > all.png
6
Alfe

写真を左から右にマージする場合は、次のコマンドを使用します。

convert image{1..0}.png +append result/result-Sprite.png

+appendの代わりに-appendに注意してください。

3
abu_bua