@标签 ImageMagick convert shave crop
最近需要向 Chrome web store 提交指定尺寸为 1280x800 的图片,说起来是个简单的事情,可是准备图片的过程还是给我带来了很大麻烦。
我在 Ubuntu 系统上采用 Flameshot 来截图,可是我很难控制截出来的图片尺寸:虽然可以拖动截取边框来调整大小,但只有当我停止拖动的时候才会显示当前的尺寸,拖动过程中没有实时反馈;另外我发现我几乎无法控制我的鼠标使得每次拖动只改变一像素的大小,不停的在目标值上下徘徊,为了截一张图片搞得想哭。😢
有时干脆放弃,直接整屏截图,然后上 GIMP 裁剪,这个方法实在笨重 😂 而且无法批量操作。
今天我又来斗争了,先是给 Flameshot 提了个 issue, 期待能有所改进吧。
然后我开始研究如何先截取一个尺寸稍大于目标尺寸的图片,然后经过命令行快速处理得到目标图片。
案例:原始图片尺寸为 1306x881,目标尺寸为 1280x800,要求水平方向居中裁剪,垂直方向从顶端开始切割,尾端多余部分丢弃。
convert screenshots/trending-repo-grid.png -crop 1280x800+13+0 /tmp/o.png
上面命令参数中的 13
等于 (1306-1280)/2
, 如果原始图片宽度不是偶数就尴尬了,所以截图的时候注意一下。
另外由于我们每次截取的原始图片的宽度都可能不同,如果需要批量化操作,应该更加智能一点:
orig_file=screenshots/trending-repo-grid.png
orig_width=$(identify -format '%w' ${orig_file})
diff_half=$(( ($orig_width - 1280)/2 ))
convert $orig_file -crop 1280x800+${diff_half}+0 /tmp/o.png
原始图片: