如何编写一个使用图像magick将图像切割成碎片的bash脚本?

时间:2009-09-29 09:39:52

标签: linux bash imagemagick

我有许多输入图像,其中包含多个较小的图像,所有这些图像都在一行中。所有包含的图像大小相同。因此,例如,图片input.png可能是480x48并且包含10张48x48张图片,所有这些图片都在一行中。

使用imagemagick convert工具(或defaul imagemagick套件提供的任何其他工具),我想写一个bash脚本,它接受输入图像,要剪切的图像数量,然后将它们全部剪切掉到单个图像。

我可以做的用户互动,但我无法让convert进行实际切割。谁能提出建议?从阅读手册页,我认为这应该有效:

convert 'input.png[0x0+48+48]' output.png

但是我收到了错误:

  

转换:没有在缓存中定义的像素   tb_icons_l.png' @ magick/cache.c/OpenCache/3572. convert: No IDATs written into file 1.png'@   编码器/ png.c / PNGErrorHandler / 1391。

有什么想法吗?

2 个答案:

答案 0 :(得分:9)

我会这样做:

convert input.png -crop 48x48  +repage  +adjoin  output_%02d.gif

Tile Cropping, in ImageMagick documentation了解详情。

答案 1 :(得分:5)

我相信你已经交换了位置和大小。尝试:

convert 'input.png[48x48+0+0]' output.png

第三张图片是:

convert 'input.png[48x48+96+0]' output.png

或者

convert 'input.png[48x48+0+96]' output.png