如何在命令行中合并图像?[关闭]


110

我想尝试CSS Sprite技术来将一些缩略图加载为单个图像。因此,我需要在服务器脱机的单个文件中“合并”一些缩略图。

假设我有10张相同大小的缩略图。您如何建议我从Linux命令行“合并”它们?

Answers:


197

您也可以尝试ImageMagic,它非常适合创建CSS精灵。关于它的一些教程在这里

示例(垂直精灵):

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 '16

这可行,但是对于大文件则要花费很多时间。有没有办法快速合成?
弗拉德·谢佩列夫

@VladTsepelev包含许多PNG意味着对其进行解码(将其解码为像素图)并最终对其再次编码。如果您想经常扩展现有的精灵,那么保持解码后的像素图版本可以加快速度。请参阅我使用PNM工具完成此操作的答案。但是,当然,像素图版本比PNG大得多,因此希望使用更多的存储空间。
Alfe

1
它说:“ convert-im6.q16:宽度或高度超出限制” ktwo201121817-c102_lpd-targ.fits_autoaper.png'@ error / cache.c / OpenPixelCache / 3839。”
zabop

28

您还可以使用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的两倍。


7

使用pnmcatnetpbm软件包的。

您可能必须将输入文件来回转换才能使用它:

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

4

如果您希望从左到右合并图片,请使用以下命令:

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

请注意,+append而不是-append

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.