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

mcdcgff0  于 2022-12-03  发布在  Linux
关注(0)|答案(4)|浏览(162)

**已关闭。**此问题不符合Stack Overflow guidelines。当前不接受答案。

此问题似乎与a specific programming problem, a software algorithm, or software tools primarily used by programmers无关。如果您认为此问题与another Stack Exchange site相关,您可以留下评论,说明在何处可以找到此问题的答案。
三年前就关门了。
去年,机构群体审查了是否重新讨论此问题,并将其关闭:
原始关闭原因未解决
Improve this question
我想尝试CSS Sprite技术来加载几个缩略图作为一个单一的图像。所以我需要“合并”几个缩略图在一个单一的文件离线在服务器上。
假设我有10个相同大小的缩略图,你会建议我如何从Linux命令行“合并”它们?

mrzz3bfm

mrzz3bfm1#

你也可以试试ImageMagick,它非常适合创建CSS精灵。一些关于它的教程here
示例(垂直子画面):

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

示例(水平子画面):

convert image1.png image2.png image3.png +append result/result-sprite.png
agxfikkp

agxfikkp2#

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

iyzzxitl

iyzzxitl3#

使用netpbm-package的pnmcat
您可能需要来回转换输入文件才能使用它:

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

编辑:正如用户Hashbrown在评论中指出的,如果PNG的大小和/或透明度不同,这可能会有问题。为了避免这个问题,他提出了这个解决方案(只是复制到这里,因为Q是关闭的,不能添加新的答案):

pnmcat -jleft -tb \
    <(pngtopnm image139.png) \
    <(pngtopnm image73.png) \
| pnmtopng \
    -alpha <(pnmcat -black -jleft -tb \
        <(pngtopnm -alpha image139.png) \
        <(pngtopnm -alpha image73.png) \
    ) \
>test.png

不过,我没有测试这个解决方案。

xqkwcwgp

xqkwcwgp4#

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

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

请注意,+append不是-append

相关问题