9 切片缩放与 imagemagick?
9-slice scaling with imagemagick?
给定尺寸为 120x120
像素的输入图像,
我想用 imagemagick 来执行
9-slice scaling.
- 将图像保持在由
左上坐标
(10,10)
和右下坐标 (110,110)
未缩放,
此中心部分为 100x100
像素。
- 左侧按给定因子缩放,
比如说 3,所以这将从
10x100
像素变为 30x100
像素
- 右侧按给定因子缩放,
比如说 2,所以这将从
10x100
像素变为 20x100
像素
- 顶部和底部均按给定系数缩放,
比如说 1.5,所以这些将从
100x10
到 100x15
每个。
- 四个角会缩放以适应新的顶部、右侧、底部和左侧的新尺寸。
类似于
(除了在我的例子中,中心元素“5”不需要改变)
如何使用 imagemagick 执行此操作?
(也欢迎对 Linux 上可用的任何其他 CLI 工具提出建议!)
这是在 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 文件中,将 % 加倍为 %%%。
使用 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”。
给定尺寸为 120x120
像素的输入图像,
我想用 imagemagick 来执行
9-slice scaling.
- 将图像保持在由
左上坐标
(10,10)
和右下坐标(110,110)
未缩放, 此中心部分为100x100
像素。 - 左侧按给定因子缩放,
比如说 3,所以这将从
10x100
像素变为30x100
像素 - 右侧按给定因子缩放,
比如说 2,所以这将从
10x100
像素变为20x100
像素 - 顶部和底部均按给定系数缩放,
比如说 1.5,所以这些将从
100x10
到100x15
每个。 - 四个角会缩放以适应新的顶部、右侧、底部和左侧的新尺寸。
类似于
如何使用 imagemagick 执行此操作?
(也欢迎对 Linux 上可用的任何其他 CLI 工具提出建议!)
这是在 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 文件中,将 % 加倍为 %%%。
使用 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”。