我需要在右侧无损地裁剪一堆jpeg 20像素。你知道任何可以做到这一点的软件吗?我检查了jpegtran,但它需要在裁剪之前以像素为单位的文件大小,我不知道如何使用它来构建批处理文件。有什么想法吗?
答案 0 :(得分:2)
我的shell脚本有点生疏,所以请在尝试此脚本之前备份您的图片。
#!/bin/bash
FILES=/path/to/*.jpg
for f in $FILES
do
identify $f | awk '{ split($3, f, "x"); f[1] -= 20; cl = sprintf("jpegtran -crop %dx%d+0+0 %s > new_%s", f[1], f[2], $1, $1); system(cl); }'
done
注意事项:
identify
是一个ImageMagick命令awk
将获取identify
的像素尺寸,以用作jpegtran
裁剪图像的参数(宽度减少20px)new_[old_name].jpg
jpegtran
可能会调整裁剪区域,以便它可以无损地执行。检查生成的图像大小是否正确,但不要稍大。答案 1 :(得分:0)
BatchCrop 可以做到这一点。它支持Windows和Mac。
答案 2 :(得分:0)
与接受的答案非常相似,以下内容也可以用于包含空格的文件名。使用identify
内置的-format
option而不是用awk解析输出,可以说很简单。
#!/bin/bash
X=0; Y=0 # offset from top left corner
for f in /path/to/*.jpg; do
read -r W H < <(identify -format '%w %h' "$f") # get width and height
(( W -= 20 )) # substract 20 from width
out="${f%%.jpg}-crop-20.jpg" # add "-crop-20" to filename
jpegtran -crop ${W}x$H+$X+$Y "$f" > "$out" # crop
done