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

Posted

技术标签:

【中文标题】如何编写一个使用图像魔法将图像切割成碎片的bash脚本?【英文标题】:How to write a bash script that cuts images into pieces using image magick? 【发布时间】:2009-09-29 09:39:52 【问题描述】:

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

使用 imagemagick convert 工具(或默认 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'@ coders/png.c/PNGErrorHandler/1391.

有什么想法吗?

【问题讨论】:

【参考方案1】:

我会这样做:

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

在Tile Cropping, in ImageMagick documentation了解更多信息。

【讨论】:

你先生,真棒!!谢谢!【参考方案2】:

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

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

第三张图片是:

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

或者

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

【讨论】:

以上是关于如何编写一个使用图像魔法将图像切割成碎片的bash脚本?的主要内容,如果未能解决你的问题,请参考以下文章

将图像裁剪成碎片然后加入,这可能使用 OpenCV 吗?

使用 boost 将几何体切割成碎片

使用 Python 图像库将一张图像切割成多张图像

使用imagemagick linux脚本裁剪图像不起作用

如何从文件中读取行并将其切割成碎片?

python:将图片切割成4份扩充数据集