2016-11-17 61 views
0

我喜欢1000幅不同尺寸的图像。是否有可能在一个命令中裁剪并调整大小,然后从中进行拼接。我尝试过这种方式,它调整图像大小,但-page选项不能正常工作,它没有得到调整大小的尺寸,但是是原始尺寸。ImageMagick裁剪一次调整马赛克多个文件

这里是我的例子它没有裁剪,因为我真的不明白如何在一个文件上应用multy操作,然后移动到另一个文件。

convert \ 
-page +0+0 img1.png -resize 50x50 \ 
-page +50+0 img2.png -resize 50x50 \ 
-page +100+0 img3.png -resize 50x50 \ 
.... 
-mosaic mosaic.png 

那么,是否有可能在文件中做多个操作,然后移动到另一个等。然后一次创建一个马赛克。这是一个好办法,一次完成所有这一切,或者首先我必须准备每个小图像,然后做马赛克。我的意思是如果我有很大的图像集合,我可能会耗尽内存,所以在这种情况下,我可以做一小部分马赛克,然后全部完成。

但第二个问题仍然显示,先准备好所有的小瓷砖然后再做马赛克并不好。

感谢您的任何帮助。

+0

我的答案是否解决了您的问题?如果是这样,请考虑接受它作为您的答案 - 通过点击投票计数旁边的空心绿色勾号/复选标记。如果没有,请说出什么不起作用,以便我或其他人可以进一步帮助您。谢谢。 http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work/5235#5235 –

回答

1

你可能想要的东西,像下面这样:

#!/bin/bash 
# Avoid problems if there are no JPGS, or no PNG files, and allow JPG or jpg, i.e. case-insensitive 
shopt -s nullglob nocaseglob 

# Loop through all JPGs and all PNGs in current directory 
for f in *.png *.jpg; do 
    convert "$f" -resize 50x50 -crop 30x30+0+0 +repage miff:- 
done | montage -tile 10x -geometry +0+0 miff:- result.png 

这意味着你运行一个convert每个图像得到它正确的大小和形状,并发送至MIFF:输出流。在循环结束时,您将启动一个montage命令,该命令从MIFF:收集文件,并将它们放置在页面上的10行图像中(-tile 10x),其间没有空格(-geometry +0+0)。

如果你想30幅的页面,而不是10行跨越它与x30更换10x

P.S.不要试图在循环内部添加任何调试语句到标准输出,因为它们将被传递到montage,这会混淆它!