使用ImageMagick分割图像

5

我有一张由许多小图片(非贴在一起)组成的大图片,背景是透明的。像一个雪碧图,但精灵不是所有相同大小,也不是按网格布局。

我能用ImageMagick将该图片分割成小图片吗?

例如,下面这个示例(其中#=有颜色的像素):

  #   ##
  #   # 
    # # 
  ###   

成为这些:
#
#

##
#
#

  #
###

我不知道如何在ImageMagick中实现这个,但可以查找纹理图集。你的问题的复杂程度很大程度上取决于你是否希望IM检测相似区域,或者你已经有了这些信息(即预定义的掩码)。 - appas
3个回答

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个不同的子图像(以不同的名称)。

0

如果您不想手动查找图像分割的坐标,可以尝试使用segment_image脚本,该脚本位于ImageMagick示例脚本区域。它使用ImageMagick命令进行简单的自动分割。

有关此脚本的背景和使用说明,请参见此处


0

使用三个裁剪命令,每个部分一个:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接