Portál AbcLinuxu, 10. května 2025 09:18
angle=10 crop="95%x95%+15%+15%" mkdir new_photos for img in `ls --color=never *.jpg`; do echo "Working on $img" eval `identify $img| sed -e 's/.* \([0-9]*x[0-9]*\) .*/\1/'| sed -e s/^/geometry=/` convert $img -rotate $angle -crop $crop -resize $geometry new_photos/$img doneNo, hodnoty to bude chtít asi doladit, ale v principu bych na to šel nějak takhle...
#!/bin/bash # # Degree and percent table: # # /--------------\ # | Angle | Crop | # |--------------| # | +- 1° | 2 % | # | +- 2° | 4 % | # | +- 4° | 7 % | # \--------------/ echo "Image Rotate script by lzap_at_seznam_dot_cz" if [ $# -ne 2 ]; then echo "Usage: $0 [angle] [crop]" echo "Example: $0 "-5" "8" = five degrees, 8% crop" exit 1 fi angle="$1" crop="$2" mkdir rotated 2> /dev/null for img in `ls --color=never *.jpg`; do echo "Analyzing $img" eval `identify $img| sed -e 's/.* \([0-9]*x[0-9]*\) .*/\1/' \ | sed -e s/^/geometry=/` w=`echo "$geometry" | sed s/x[0-9]*//` h=`echo "$geometry" | sed s/[0-9]*x//` cw=$(echo "scale=0; ($w / 100) * $crop" | bc -l) ch=$(echo "scale=0; ($w / 100) * $crop" | bc -l) w2=$(echo "scale=0; $w - (($w / 100) * $crop * 2)" | bc -l) h2=$(echo "scale=0; $h - (($h / 100) * $crop * 2)" | bc -l) echo "Working on $img ($w x $h) => cropping ${crop}% => ($w2 x $h2)" convert $img -rotate "$angle" -crop "${w2}x${h2}+$cw+$ch" -resize $geometry \ -normalize -quality 95 rotated/$img done
cosi.png PNG 512x82 512x82+0+0 PseudoClass 256c 5kb cosi.png PNG 512x82+0+0 PseudoClass 256c 8-bit 4.5kb 0.000u 0:01 cosi.png PNG 512x82 PseudoClass 256c 4kb 0.000u 0:01Jak sám vidíš, prostřední by se vůbec nematchnul... Bezpečnější je už i file(1), a nejlepší je asi vlastní program, buď jednoúčelový na pět řádků nebo s použitím nějaké obrázkové knihovny, klidně i libWand.
-format
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.