gpt4 book ai didi

bash - 使用 bash 将所有图像设置为横向

转载 作者:行者123 更新时间:2023-12-04 00:08:57 27 4
gpt4 key购买 nike

在文件资源管理器或 shotwell 中,某些图像似乎处于纵向模式,而有些则处于横向模式。但是 identify 命令无法区分它们:

风景:

IMG_0064.JPG JPEG 3648x2736 3648x2736+0+0 8-bit DirectClass 3.319MB 0.000u 0:00.000

肖像:

IMG_0108.JPG JPEG 3648x2736 3648x2736+0+0 8-bit DirectClass 3.004MB 0.000u 0:00.000

我使用以下脚本来获取图像的宽度和高度:

Batch crop and resize images to create thumbnails

有没有办法也获得方向?

----------------------------------------------- -------------------------------------------------------

我想要的是批量裁剪和调整图像大小以创建缩略图 (solution),如果我在池中获得一些肖像图像,它会旋转它们。

完整的解决方案:

#! /bin/bash
for img in *.JPG ; do
identify=$(identify "$img")
[[ $identify =~ ([0-9]+)x([0-9]+) ]] || \
{ echo Cannot get size >&2 ; continue ; }
width=${BASH_REMATCH[1]}
height=${BASH_REMATCH[2]}
let good_width=height+height/2

orientation=$(identify -format '%[exif:orientation]' $img)
if (( orientation > 1 )) ; then # crop horizontally
echo "$img is portrait"
name="temp"
convert -rotate 90 "$img" "$name"
mv "$img" "portrait_$img"
mv "$name" "$img"
fi

if (( width < good_width )) ; then # crop horizontally
let new_height=width*2/3
new_width=$width
let top='(height-new_height)/2'
left=0

elif (( width != good_width )) ; then # crop vertically
let new_width=height*3/2
new_height=$height
let left='(width-new_width)/2'
top=0
fi

convert -auto-orient "$img" -crop "$new_width"x$new_height+$left+$top -resize 120x80 thumb-"$img"
done

最佳答案

您可以将 -auto-orient 选项添加到 convert 以自动旋转图像。

如果只需要获取方向,则必须在 identify 上使用格式说明符,例如:

identify -format '%[exif:orientation]' image_file.jpg

有关详细信息,请参阅 Digital Photo Orientation 部分。在 ImageMagick 文档中。

关于bash - 使用 bash 将所有图像设置为横向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16262150/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com