コマンドラインで画像をマージする方法は?[閉まっている]


110

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

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

回答:


197

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

45
注:これにより、の+append代わりに水平スプライトを使用するために、垂直スプライトが生成され-appendます。
チャンゴ

13
怠惰な場合convert -append *.png out.png
ChillarAnand

これは機能しますが、巨大なファイルの場合は時間がかかります。高速合成する方法はありますか?
Vlad Tsepelev

@VladTsepelev多数のPNGを連結するとは、操作のためにそれらを(ピックスマップに)デコードし、最後に再度エンコードすることを意味します。既存のスプライトを非常に頻繁に拡張したい場合は、デコードされたピックスマップのバージョンを維持することで、速度を上げることができます。この操作を実現するためにPNMツールを使用して実行する方法については、私の回答を参照してください。ただし、もちろんpixmapバージョンはPNGよりもはるかに大きいため、より多くのストレージを使用することを期待してください。
Alfe、2018

1
それは言う:´convert-im6.q16:幅または高さが制限を超えています `ktwo201121817-c102_lpd-targ.fits_autoaper.png '@ error / cache.c / OpenPixelCache / 3839.´
zabop

28

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

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倍の速度です。


7

pnmcatnetpbm-packageのを使用します。

あなたはおそらくそれを使用するために入力ファイルをあちこちに変換する必要があります:

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

4

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

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.