用imagemagick分割图像

时间:2011-11-25 18:32:27

标签: image image-processing imagemagick image-manipulation

我在透明背景上有许多较小的图像(不接触)组成的大图像。像spritesheet一样,但精灵的大小不一样,也没有在网格上布局。

我可以使用ImageMagick将图像分割成更小的图像吗?

因此,例如,这:(其中# =彩色像素)

  #   ##
  #   # 
    # # 
  ###   

成为这些

#
#

##
#
#

  #
###

3 个答案:

答案 0 :(得分:4)

您可以在一个命令中执行此操作,并且非常有效地执行此操作。例如,这个命令:

time convert \
   very-very-large.png \
  -quality 85 \
  -write mpr:mpc:label \
  +delete \
     mpr:mpc:label -crop '3000x2001+0+491' -resize '170x116!>'   -write pic1.png +delete \
     mpr:mpc:label -crop '2981x2883+8+0'   -resize '75x75!>'     -write pic2.png +delete \
     mpr:mpc:label -crop '1100x1983+0+0'   -resize '160x160!>'   -write pic3.png +delete \
     mpr:mpc:label -crop '2000x2883+0+0'   -resize '1024x960!>'  -write pic4.png +delete \
     mpr:mpc:label -crop '1000x2883+0+0'   -resize '190x188!>'   -write pic5.png +delete \
     mpr:mpc:label -crop '3000x2000+0+0'   -resize '2048x2047!>' -write pic6.png +delete \
     mpr:mpc:label -crop '3000x2883+0+0'   -resize '595x421!>'   -write pic7.png +delete \
     mpr:mpc:label -crop '3000x2883+0+0'   -resize '3000x2883!>' -write pic8.png

将剪切并保存(以不同名称)8个不同的子图像。

答案 1 :(得分:0)

使用三个crop commands,每个部分一个:

convert mosaic -crop 1x2+0+0 part1
convert mosaic -crop 2x3+2+0 part2
convert mosaic -crop 3x2+0+2 part3

答案 2 :(得分:0)

如果您不想自动查找分割图像的坐标,可以尝试segment_image中的ImageMagick example scripts area脚本。它使用ImageMagick命令进行简单的自动分割。

此脚本的一些背景和使用说明可用here