convert -auto-orient nem működik

Fórumok

Sziasztok.

Az imagemagick egyik programkájával szeretnék rengeteg képanyagot feldolgozni. Eddig egyedül az auto-orient kapcsolója nem akart működni akkor sem, ha önmagában alkalmaztam közvetlenül a convert után írva.

Lényegében az exif adatok alapján választja meg, mit kell elforgatnia és mennyire. Régebben meg is tette, most viszont valamiért nem.

az exifadatokat exiftool-lal szoktam ellenőrizni. Tudom, ha mondjuk a Mirage programot rászabadítom egy képre, hogy forgassa át ő, akkor törli az exifek jó részét. Ez kicsit bosszantó. Ha megoldhatnám converttel ezt, akkor rózsaillatú lenne minden napom.

Példa a scriptemre:


$ cat vizjel.sh
for name in ./*.JPG; do
echo "Working on "$name" ..."

convert -auto-orient -modulate 50 "$name" "${name/.jpg/-tempp}"
convert -resize 640x480 "${name/.jpg/-tempp}" "${name/.jpg/-temp}"

convert -size 1000x40 xc:none -gravity center \
-font Anaktoria -pointsize 18 \
-stroke black -strokewidth 2 -annotate 0 'photo bzs © hopp' \
-background none -shadow 100x3+0+0 +repage \
-stroke none -fill white -annotate 0 'photo bzs ©hopp' \
${name/.jpg/-temp} +swap -gravity south -geometry +0-3 \
-composite ${name}_web.jpg
rm -f ${name/.jpg/-temp}
rm -f ${name/.jpg/-tempp}
done
# vegul datum szerint konyvtarakba rendezzuk a cuccot:
exiftool -d %Y/%m/%d/ "-Directory

Hozzászólások

Ez most tényleg bonyolult kérdés, vagy csak csúnyán fogalmztam?
Valóban nem találokrámegoldást sehol.

haha, pontosan ez tortent velem is! valszeg egy update elkurta.
kicsit rakeresve talaltam egy hibajegyet egy nem tul regi verziobol, ahol erre panaszkodtak, valszeg annak a javitasat sikerult eltolni.

Ami mukodott, az a jpegtran a jhead csomagbol. amugy is javallott, lossless tud jpeg-et fizikailag forgatni (tehat nem exif tag-gel, hanem tenylegesen).

nekema convert zért jött be, mert kiolvasta az exifből, kell-e forgatni, aztán megcsinálta.
Forgatóprogramok vannak ugyan,de ahhozmeg előbb egy exiftoolt kell indítanom,ami kiolvassa hogy mi van a forgatással...

Kérdés:
lel lehet tölteni még valahonnan egyműködő verziót? vagy a működőforráskódot..

Nekem is van egy automatikus képfeldolgozó szkriptem, ami átméretezi és elforgatja a képeket (webre feltöltéshez használtam). Kell neki

jpegexiforient, jpegtran, convert

, workaround-ként fel tudod használni. A lényege a következő:


for pic in "$dir"/*.jpg; do
  [ -f "$pic" ] || continue
  target_pic="$target_dir/${pic##*/}"
  orientation="$(jpegexiforient "$pic")"
  case "$orientation" in
    # taken from exifautotran
    1) transform="";;
    2) transform="-flip horizontal";;
    3) transform="-rotate 180";;
    4) transform="-flip vertical";;
    5) transform="-transpose";;
    6) transform="-rotate 90";;
    7) transform="-transverse";;
    8) transform="-rotate 270";;
    *) transform="";;
  esac
  jpegtran -copy none $transform "$pic" | "$convert" -resize "$PICTURE_TOTAL_PIXELS" -quality "$PICTURE_QUALITY" - "$target_pic"
  if [ -n "$transform" ]; then
    jpegexiforient -1 "$target_pic"
  fi
  touch -r "$pic" "$target_pic"
done

semmit. Üres sor a kimenet.
Időközben találtam egy működőalternatívát:

mogrify -auto-orient -quality 90% kep.JPG

ha a 90-et 100-ra emelem,akép mérete nő, nem tudom miért, interpolál, vagy valami változik.

--------
módosítottam az eredeti scriptemet:

convert -modulate 50 "$name" "${name/.jpg/-tempp}"
mogrify -auto-orient -quality 90% "${name/.jpg/-tempp}" "${name/.jpg/-temp}"

ezeket szúrtam be a megfelelő helyre, így 2 sor változott.
Beforgat, képet javít, fájlméretet csökkent,vízjelez, könyvtárvba rendez dátum szerint. Épphogy kávét nem főz. Majd később... Az exifek is megmaradnak.

Már csak az a kérdés, tényleg nem brutalizál-e el valamitez az új mognify...