我已经获得了一个文件夹,里面装满了白色背景上的产品图像,并要求它们都是方形的,所有产品周围都有一致的填充物。
我想避免调整图像大小本身,所以我的计划是修剪图像,添加填充使图像成方形,然后以图像的百分比为图像添加边框。
我唯一无法弄清楚的是如何进行填充。我看到的所有平方图像示例都会在此过程中调整图像大小。有没有办法找到最长的尺寸并根据它调整大小?
我还没有ImageMagick的代码(除了简单的trim和border命令之外)。我们的想法是修剪空白,然后使图像成方形,将产品(在本例中为矩形黑框)留在图像的中心。最后,添加边框以为图像提供填充。
答案 0 :(得分:1)
我认为是这样的:
#!/bin/bash
# Get trim box w, h, x, y
IFS=" x+" read w h x y < <(convert -fuzz 10% start.jpg -format "%@" info:)
# Get longest side
longest=$w
[ $h -gt $longest ] && longest=$h
# Increase by 20%
longest=$(echo "scale=0;$longest*1.2/1" | bc)
echo $longest
convert -fuzz 10% start.jpg -trim -background white -gravity center -extent ${longest}x${longest} result.jpg
如果你不熟悉“bashisms”,你可以运行
convert -fuzz 10% start.jpg -format "%@" info:
看看第一个命令在做什么 - 它只是得到修剪框而没有实际修剪。尝试在其后添加此行:
echo $w, $h, $x, $y
答案 1 :(得分:0)
使用Linux作为shell脚本:
for file in *\.png ; # or jpg,....
do IMG_W=$(identify -ping -format '%w' $file);
IMG_H=$(identify -ping -format '%h' $file);
## echo "$file: w: $IMG_W x h $IMG_H";
## do something like
## DIN A5: 2331x3307 pixel 400 dpi
## half the width of white border
# XPLUS=$(echo " ( 2331 - $IMG_W ) / 2 " |bc) ;
# YPLUS=250
## 250 pixel from top border
## echo "position: Xplus $XPLUS Yplus $YPLUS";
## according to the calculations combine with white picture (background)
# composite -geometry +$XPLUS+$YPLUS $file white.png ../tmp7/$file;
done
示例(已完成注释)显示了如何计算和合并文件。我不知道从哪个来源获得了上面脚本的两行(这是我写的脚本的一部分),我想安东尼·蒂森在他的优秀网站&#34; ImageMagick的例子用法&#34;