【问题标题】:9-slice scaling with imagemagick?使用 imagemagick 进行 9 切片缩放?
【发布时间】:2021-06-24 12:25:19
【问题描述】:

给定尺寸为120x120 像素的输入图像, 我想使用 imagemagick 来执行 9-slice scaling.

  • 将图像保持在由 左上坐标(10,10) 和右下坐标(110,110)未缩放, 此中心部分为100x100 像素。
  • 左侧按给定因子缩放, 比如说 3,所以这将从 10x100 像素变为 30x100 像素
  • 按给定因子的右侧比例, 比如说 2,所以这将从 10x100 像素变为 20x100 像素
  • 顶部和底部都按给定因子缩放, 比如说 1.5,所以这些将从 100x10 变为 100x15 每个。
  • 四个角会缩放以适应新的顶部、右侧、底部和左侧的新尺寸。

类似的东西 (除了在我的例子中,中心元素“5”不需要改变)

如何使用 imagemagick 执行此操作?

(也欢迎对 Linux 上可用的任何其他 CLI 工具提出建议!)

【问题讨论】:

    标签: image-processing imagemagick image-scaling


    【解决方案1】:

    这是 ImageMagick 6(Unix 语法)中的一种方法。

    输入:

    convert logo.png -write mpr:img +delete \
    \( \
    \( mpr:img -gravity northwest -crop 10x10+0+0 +repage -resize 300x150%! \) \
    \( mpr:img -gravity north -crop 100x10+0+0 +repage -resize 100x150%! \) \
    \( mpr:img -gravity northeast -crop 10x10+0+0 +repage -resize 200x150%! \) \
    +append \
    \) \
    \( \
    \( mpr:img -gravity west -crop 10x100+0+0 +repage -resize 300x100%! \) \
    \( mpr:img -gravity center -crop 100x100+0+0 +repage \) \
    \( mpr:img -gravity east -crop 10x100+0+0 +repage -resize 200x100%! \) \
    +append \
    \) \
    \( \
    \( mpr:img -gravity southwest -crop 10x10+0+0 +repage -resize 300x150%! \) \
    \( mpr:img -gravity south -crop 100x10+0+0 +repage -resize 100x150%! \) \
    \( mpr:img -gravity southeast -crop 10x10+0+0 +repage -resize 200x150%! \) \
    +append \
    \) \
    -append \
    logo_result.png
    

    结果:

    如果使用 ImageMagick 7,则将 convert 更改为 magick。

    如果在 Windows 上,将行尾 \ 更改为 ^ 并从 ( 和 ) 中删除 \。如果在 .bat 文件中,将 % 加倍为 %%。

    【讨论】:

      【解决方案2】:

      使用 ImageMagick,您可以将其视为一系列孤立的裁剪和调整大小操作。这是一个示例命令...

      magick input.png -write mpr:img0 +delete ^
         ( mpr:img0 -gravity west -crop 10x+0+0 -resize 300x100% ) ^
         ( mpr:img0 -shave 10x0 ) ^
         ( mpr:img0 -gravity east -crop 10x+0+0 -resize 200x100% ) ^
         +append +repage -write mpr:img0 +delete ^
         ( mpr:img0 -gravity north -crop x10+0+0 -resize 100x150% ) ^
         ( mpr:img0 -shave 0x10 ) ^
         ( mpr:img0 -gravity south -crop x10+0+0 -resize 100x150% ) ^
         -append +repage result.png
      

      此命令将从左右两侧取一个 10 像素宽的条带,将左侧加宽 300%,将右侧加宽 200%,然后将它们重新附加到中心。

      然后从顶部和底部取出一个 10 像素高的条带,将它们的高度都调整为 150%,然后将它们重新附加到中心部分。

      角得到正确缩放,因为它们同时经历了水平和垂直调整大小的操作。

      该命令在 Windows CLI 语法中使用 IMv7。对于 Windows BAT 脚本,您需要将百分号“%%”加倍。

      要使其在 *nix 系统上工作,请将续行插入符号“^”更改为反斜杠“\”并使用反斜杠“\(...\)”转义括号。

      要将它与 IMv6 一起使用,请将“magick”更改为“convert”。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-09-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-01-24
        • 2013-11-08
        • 2012-06-03
        相关资源
        最近更新 更多