【问题标题】:Splitting image with imagemagick使用 imagemagick 分割图像
【发布时间】:2012-01-06 13:35:27
【问题描述】:

我有一个大图像,由透明背景上的许多小图像(非触摸)组成。就像一个 spritesheet,但 sprite 的大小并不完全相同,也不是在网格上布局。

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

例如,这个:(# = 彩色像素)

  #   ##
  #   # 
    # # 
  ###   

变成这些

#
#

##
#
#

  #
###

【问题讨论】:

  • 我不知道如何在 ImageMagick 中执行此操作,但请查找纹理图集。您的问题的复杂性在很大程度上取决于您是否希望 IM 检测全等区域,或者您是否已经拥有这些信息(即预定义的掩码)。

标签: image image-processing imagemagick image-manipulation


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    您可以在一个命令中执行此操作并且非常高效。比如这个命令:

    时间转换\ 非常非常大.png \ -质量 85 \ -写mpr:mpc:标签\ +删除\ 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 个不同的子图像。

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 2012-12-16
        • 1970-01-01
        • 1970-01-01
        • 2012-03-27
        • 2011-07-05
        • 2022-10-17
        • 1970-01-01
        • 1970-01-01
        • 2018-04-10
        相关资源
        最近更新 更多