Portál AbcLinuxu, 10. května 2025 09:18

Dotaz: Skript pro hromadnou rotaci fotek

28.8.2005 15:03 Lukáš Zapletal | skóre: 42 | blog: lzapův svět | Olomouc
Skript pro hromadnou rotaci fotek
Přečteno: 217×
Odpovědět | Admin
Zdravím,

potřeboval bych upravit fotky tety z dovolené. Úplně všechny má mírně pootočeny vlevo. Mohl by mi někdo pastnout skript, který používá, k hromadnému pootočení?

Potřebuji fotku pootočit, zvětšit a oříznout na původní velikost...

Neč začnu něco vymýšlet, tak bych raději použil něčí již hotový skript... Ale zřejmě se do toho pustím... Uvidíme. Předem díky za tipy a rady...
Later --- Lukáš Zapletal
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

28.8.2005 15:56 Jáchym Čepický | skóre: 29 | blog: U_Jachyma
Rozbalit Rozbalit vše Re: Skript pro hromadnou rotaci fotek
Odpovědět | | Sbalit | Link | Blokovat | Admin
něco jako
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...
28.8.2005 16:01 Lukáš Zapletal | skóre: 42 | blog: lzapův svět | Olomouc
Rozbalit Rozbalit vše Re: Skript pro hromadnou rotaci fotek
Tak to je úplně přesně ono, díky, mám tak 20 minut ušetřeno... :-)
28.8.2005 16:39 Lukáš Zapletal | skóre: 42 | blog: lzapův svět | Olomouc
Rozbalit Rozbalit vše Re: Skript pro hromadnou rotaci fotek
Jen připomínka k tomu ořezu:

Ten posun se neudává v procentech... viz dokumentace: If the x is negative, the offset is measured leftward from the right edge of the screen to the right edge of the image being displayed. Similarly, negative y is measured between the bottom edges. The offsets are not affected by %; they are always measured in pixels.
28.8.2005 17:23 Jáchym Čepický | skóre: 29 | blog: U_Jachyma
Rozbalit Rozbalit vše Re: Skript pro hromadnou rotaci fotek
no vida, já to vzal z nějaký stránky, ale to je jedno, dík za upozornění.
28.8.2005 17:46 Lukáš Zapletal | skóre: 42 | blog: lzapův svět | Olomouc
Rozbalit Rozbalit vše Re: Skript pro hromadnou rotaci fotek
Toš jsem to vylepšil...
#!/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
28.8.2005 18:09 Lukáš Zapletal | skóre: 42 | blog: lzapův svět | Olomouc
Rozbalit Rozbalit vše Re: Skript pro hromadnou rotaci fotek
Bohužel při tom ořezu a následném zpětném zvětšení vznikají někde chyby při výpočtu, takže se to u šířky o pár pixelů někdy liší. Chtělo by to vyřešit, já se tím ale už zabývat nebudu. Pixel sem, pixel tam, ve fotolabu snad nadávat nebudou.

To jen pro úplnost, aby to někdo nepoužil a pak neřval :-) Když tak mi pošlete patch, rád to upravím :-D
29.8.2005 09:50 Dejv | skóre: 37 | blog: Jak ten blog nazvat ... ? | Ostrava
Rozbalit Rozbalit vše Re: Skript pro hromadnou rotaci fotek
A co takhle to napred zvetsit (o krapanek vic, nez je treba) a pak teprve oriznout na presny rozmer?
Pevně věřím, že zkušenější uživatelé mě s mými nápady usměrní a pošlou tam, kam tyto nápady patří...
28.8.2005 18:15 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Re: Skript pro hromadnou rotaci fotek
ImageMagick mám na blacklistu programů, jejichž výstup nikdy nezkoušet neparsovat. Příklad výstupů identify(1) stejného obrázku na třech různých poměrně aktuálních linuxových distrech:
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:01
Jak 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.
28.8.2005 18:16 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Re: Skript pro hromadnou rotaci fotek
s/neparsovat/parsovat/
28.8.2005 18:34 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Skript pro hromadnou rotaci fotek
Proto existuje parametr -format
28.8.2005 19:14 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Re: Skript pro hromadnou rotaci fotek
Jo, je pravda, že ten už existuje dost dlouho. Ale než tohle, tak raději toto...
28.8.2005 19:27 Michal Vyskočil | skóre: 60 | blog: miblog | Praha
Rozbalit Rozbalit vše Re: Skript pro hromadnou rotaci fotek
Nechceš ten svůj blacklist zveřejnit, třeba na blogu? Myslím, že by to bylo docela užitečné.
When your hammer is C++, everything begins to look like a thumb.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.