这是一个命令,它将读取输入图像,创建一个带有黑色边框的 480x360 透明单元格,创建一个输入图像大小的单元格网格,然后将该网格合成到输入...
infile="MyPic.png"
convert "$infile" -size 480x360 -set option:distort:viewport "%[w]x%[h]" \
\( xc:none -shave 1x1 -compose copy -bordercolor black -border 1x1 \) \
-virtual-pixel tile -distort SRT 0 -compose over -composite output.png
这将使网格线的粗细为 2 个像素。如果线条必须是 1 像素粗,则可以使用这样的命令来完成相同的操作...
convert "$infile" -size 480x360 -set option:distort:viewport "%[w]x%[h]" \
\( xc:none -chop 1x1 -background black -splice 1x1 \) \
-virtual-pixel tile -distort SRT 0 -compose over -composite \
-bordercolor black -shave 1x1 -compose copy -border 1x1 output.png
编辑添加:如果目标是将网格划分为特定数量的单元格而不是指定尺寸的单元格,那么这样的命令应该可以工作......
convert "$infile" \( +clone -channel A -evaluate set 0 +channel \
-crop 3x4@ -chop 1x1 -background black -splice 1x1 \) -background none \
-flatten -shave 1x1 -bordercolor black -border 1x1 output.png
创建输入图像的克隆并使其透明,使用“-crop 3x4@”将其裁剪为 3x4 单元格的网格,在单元格的顶部和左侧边缘放置黑色边框,然后重新组合它们通过将它们展平到输入图像上来形成网格。它通过在右边缘和下边缘添加边框来完成,同时保留输入图像的原始尺寸。
显然使用这种方法,如果输入图像不能被单元格的数量平均划分,则单元格可能不具有完全相同的尺寸。
再次编辑:如果您实际上不需要网格作为叠加层,您可以直接将图像裁剪成图块,在图块周围放置黑线,然后重新组合它们以创建所需的输出图像。这可以通过像这样的简单命令来制作 480x360 大小的单元格...
convert "$infile" -background black -bordercolor black \
-crop 480x360 -chop 1x1 -splice 1x1 -flatten -shave 1x1 -border 1x1 output.png
或者可以像这样使用“-crop 3x3@”来制作一个 3 行 3 列的网格,让 ImageMagick 尽可能地计算尺寸...
convert "$infile" -background black -bordercolor black \
-crop 3x3@ -chop 1x1 -splice 1x1 -flatten -shave 1x1 -border 1x1 output.png
同样,如果图像大小不能被单元格的数量整除,则某些单元格的大小会有一个像素的差异。