identify 命令可以判定图片宽度高度信息
# identify 33.jpeg
33.jpeg JPEG 842x653 842x653+0+0 8-bit sRGB 139KB 0.000u 0:00.000
但实际上这个图片显示是相反的方向 宽653 高842
所以identify 这样判断图片的宽度和高度是相反的。什么原因呢?
其实并不是identify判断的有问题,而是没有取全图片的参数,图片的exif信息中有一项为orientation表示方向。
大白话解释就是你的宽高是从那个点开始计算的。
Exif的Orientation信息说明:
判断值:
identify -format '%[exif:orientation]' xxx.jpeg
输出结果为 6
可能出现的数值也就是 1,3,6,8
1和3分别未0和180度,不会颠倒宽高,只需要处理是6和8的情况。
解决方案:
用convert 命令,判断图片的方向是为6或8时,使用-auto-orient 把6 改为1
shell 代码如下:
orientation1=`identify -format '%[exif:orientation]' $i`
echo "orientation1 is: " $orientation1
if [ [ $orientation1 -eq 6 ] ]; then
convert $i -auto-orient $i
fi
orientation2=`identify -format '%[exif:orientation]' $i`
echo "orientation2 is:" $orientation2 "