2011-11-25 213 views
3

我在透明背景上有很多较小图像(非触摸)组成的大图像。就像一个spritesheet,但精灵的大小并不完全相同,也没有放在网格上。用imagemagick分割图像

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

因此,举例来说,这样的:(其中# =彩色像素)

# ## 
    # # 
    # # 
    ### 

变为这些

# 
# 

## 
# 
# 

    # 
### 
+0

我不知道如何在ImageMagick中做到这一点,但看看纹理地图集。您的问题的复杂程度取决于您是否希望即时消息检测一致性区域,或者您是否已有这些信息(即预定义的掩码)。 – appas

回答

0

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

convert mosaic -crop 1x2+0+0 part1 
convert mosaic -crop 2x3+2+0 part2 
convert mosaic -crop 3x2+0+2 part3 
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个不同的子图像中剪切并保存(以不同的名字)。