Portál AbcLinuxu, 26. května 2026 09:05
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
done
No, 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
Když tak mi pošlete patch, rád to upravím
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.