我有一张5120×4352的图像,我将其裁剪为2048x2048磁贴。我想将裁剪后的瓷砖命名为
但是此命令:
convert image.png -crop 2048x2048 -gravity northwest \
-extent 2048x2048 -transparent white \
-set 'filename:tile' '%[fx:page.x/2048]_%[fx:page.y/2048]' \
+repage +adjoin 'tile_%[filename:tile].png'
给我这个结果:
我怀疑这与最后一行和最后一列上的图块不完全为2048x2048有关,但是range命令使最终结果仍为2048,但是如何将其与图块和文件名一起使用?
我当前的解决方法是先像这样调整原始图像的大小,然后运行上面的命令:
convert image.png -gravity northwest \
-extent 2048x2048 -transparent white bigger.png
但是一口气完成它就很好了:)
答案 0 :(得分:1)
使用ImageMagick,可以将视口设置为刚好大于输入图像的视口,以便将视口平均分割为2048。然后,无操作失真将视口放大到该大小。这样,“-crop 2048x2048”将创建已经为2048平方的作品。
这是我在Windows中处理的示例命令,我很确定我将其转换为* nix命令可以正常工作。
convert image.png \
-set option:distort:viewport '%[fx:w-(w%2048)+2048]x%[fx:h-(h%2048)+2048]' \
-virtual-pixel none -distort SRT 0 +repage -crop 2048x2048 \
-set 'filename:tile' '%[fx:page.x/2048]_%[fx:page.y/2048]' \
+repage +adjoin 'tile_%[filename:tile].png'
“扭曲SRT”操作除了将视口扩展为均匀划分为2048的尺寸外,什么都不做,结果就像在裁剪之前进行“扩展”一样。而“-虚拟像素无”将在溢出区域保留透明背景。
编辑后添加:即使尺寸已被2048整除,上述命令中用于扩展视口的公式也将错误地添加另外2048个像素。如果尺寸小于2048,也会产生错误的结果。请考虑使用像这样的公式,用于设置视口以处理这些条件...
'%[fx:w+(w%2048?2048-w%2048:0)]x%[fx:h+(h%2048?2048-h%2048:0)]'