Fehler im Skript: Cinelerra Bilder auf PAL skalieren
Hallo Liste. Ich möchte für meinen Vater eine Diaschau unter cinelerra erstellen. Laut "Cinelerra kopakt" von Marco Michely soll ich dafür das folgende Skript über meine Bilder jagen: #/bin/sh mkdir skaliert for element in `ls . | grep -i jp*g$`; do size=`identify ${element}` width=`echo ${size} | sed '+s+.*JPEG ++' | sed '+s+x.*++'` height=`echo ${size} | sed '+s+.JPEG [0-9]*x++' | sed '+s+DirectClass.*++'` rat_height=$((${height}/576)) tmp_width=$((${width} / ${rat_heigth})) new_width=$((${tmp_width}*9375/10000)) convert -resize "${new_width}x576!" -quality 100 -sharpen 20 ${element} skaliert/x576_${element} done Leider bekomme ich nur eine Fehlermeldung anstelle der gesizeten Bilder. line 8: K1_001.jpg3647 5488x3647+0+0 8-bit /576: syntax error: invalid arithmetic operator (error token is ".jpg3647 5488x3647+0+0 8-bit /576") Ich habe Zeichen für Zeichen nach dem Fehler gesucht .... Seht ihr den Fehler? tower2:/> identify K1_001.jpg K1_001.jpg JPEG 5488x3647 5488x3647+0+0 8-bit DirectClass 25.42mb 1.830u 0:03 Gruß, Kai
Hi Kai! On Sa, 20 Jun 2009, Kai Krämer wrote:
#/bin/sh mkdir skaliert for element in `ls . | grep -i jp*g$`;
Was der Blödsinn mit jp*g machen soll, erschließt sich mir nicht. das passt ja auch auf foobar.jg oder blah.jppppppg Außerdem, kann die shell Dateinamen selber expandieren: for element in *.[jJ][pP][gG];
do size=`identify ${element}` width=`echo ${size} | sed '+s+.*JPEG ++' | sed '+s+x.*++'` height=`echo ${size} | sed '+s+.JPEG [0-9]*x++' | sed '+s+DirectClass.*++'`
Umständlicher geht es nicht. width=`identify -format %w ${element}` height=`identify -format %h ${element}`
rat_height=$((${height}/576)) tmp_width=$((${width} / ${rat_heigth})) new_width=$((${tmp_width}*9375/10000)) convert -resize "${new_width}x576!" -quality 100 -sharpen 20 ${element} skaliert/x576_${element} done
Das sieht ok aus. Ob man tatsächlich möchte, dass die Bilder pauschal geschärft werden soll, weiß ich nicht. Mit freundlichen Grüßen Christian -- hundred-and-one symptoms of being an internet addict: 245. You use Real Audio to listen to a radio station from a distant city rather than turn on your stereo system. -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo Christian. Danke für die Hilfe. Gestern habe ich es aber nicht mehr rechtzeitig geschafft zu antworten. Am Samstag, den 20.06.2009, 13:40 +0200 schrieb Christian Brabandt:
On Sa, 20 Jun 2009, Kai Krämer wrote:
#/bin/sh mkdir skaliert for element in `ls . | grep -i jp*g$`;
Was der Blödsinn mit jp*g machen soll, erschließt sich mir nicht. das passt ja auch auf foobar.jg oder blah.jppppppg Außerdem, kann die shell Dateinamen selber expandieren: for element in *.[jJ][pP][gG];
do size=`identify ${element}` width=`echo ${size} | sed '+s+.*JPEG ++' | sed '+s+x.*++'` height=`echo ${size} | sed '+s+.JPEG [0-9]*x++' | sed '+s+DirectClass.*++'`
Umständlicher geht es nicht. width=`identify -format %w ${element}` height=`identify -format %h ${element}`
rat_height=$((${height}/576)) tmp_width=$((${width} / ${rat_heigth})) new_width=$((${tmp_width}*9375/10000)) convert -resize "${new_width}x576!" -quality 100 -sharpen 20 ${element} skaliert/x576_${element} done
Habe es mal so zusammengebaut. #/bin/sh mkdir skaliert for element in *.[jJ][pP][gG]; do size=`identify ${element}` width=`identify -format %w ${element}` height=`identify -format %h ${element}` rat_height=$((${height}/576)) tmp_width=$((${width} / ${rat_heigth})) new_width=$((${tmp_width}*9375/10000)) convert -resize "${new_width}x576!" -quality 100 -sharpen 20 ${element} skaliert/x576_${element} done Leider bekomme ich jetzt einen anderen Fehler :-( line 9: 5488 / : syntax error: operand expected (error token is " ") Gehört vielleicht kein Freizeichen dazwischen? Gruß, Kai
Hallo, Am Son, 21 Jun 2009, Kai Krämer schrieb: [..]
#/bin/sh mkdir skaliert for element in *.[jJ][pP][gG]; do size=`identify ${element}` width=`identify -format %w ${element}` height=`identify -format %h ${element}` rat_height=$((${height}/576)) tmp_width=$((${width} / ${rat_heigth})) new_width=$((${tmp_width}*9375/10000)) convert -resize "${new_width}x576!" -quality 100 -sharpen 20 ${element} skaliert/x576_${element} done
Leider bekomme ich jetzt einen anderen Fehler :-(
line 9: 5488 / : syntax error: operand expected (error token is " ")
Gehört vielleicht kein Freizeichen dazwischen?
Erstens sollte das Script mit '#!/bin/bash' beginnen und zweitens geht davor was schief. Das Verhalten läßt sich reproduzieren, wenn $rat_height leer ist: $ echo $(( 4 / 0 )) bash: 4 / 0 : division by 0 (error token is " ") $ echo $(( 4 / )) bash: 4 / : syntax error: operand expected (error token is " ") Füge mal direkt nach dem '#!/bin/bash' ein 'set -x' ein, oder ändere das '#!/bin/sh' gleich in '#/bin/bash -x'. Ansonsten hab ich noch ne Variante die das Parsen und Rechnen in awk macht, allerdings müßte ich dazu noch wissen, was du unter PAL verstehst. 720x576p/4:3 Seitenverhältnis oder (auch) 720x576p/16:9 anamorph? Hier mal der Zwischenstand: ==== #!/bin/bash shopt -s nullglob mkdir -p skaliert for file in *.[Jj][Pp][Gg] *.[Jj][Pp][Ee][Gg]; do echo "converting $file ..." newwidth=( $(identify "$file" | \ awk '{ si=gensub(".*JPEG *([0-9]+x[0-9]+)[^0-9].*", "\\1", 1, $0); split(si, a, "x"); printf("%i\n", a[1] / (a[2] / 576)); }' ) ) convert -size "720x576" xc:black \ -gravity Center -draw "image over 0,0 ${newwidth},576 $file" \ "skaliert/x576_${file}"; done ===== Soweit erstmal ... -dnh -- Typisch billiger Roter. Ganz schwach im Abgang. -- Volker Pispers, "Bis neulich" (2007), zu Schröder im Wahlkampf 2005 bei der "Elefantenrunde" -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
COOOL! :-)) Danke David! Danke Liste! Am Sonntag, den 21.06.2009, 11:24 +0200 schrieb David Haller:
Ansonsten hab ich noch ne Variante die das Parsen und Rechnen in awk macht, allerdings müßte ich dazu noch wissen, was du unter PAL verstehst. 720x576p/4:3 Seitenverhältnis oder (auch) 720x576p/16:9 anamorph? Hier mal der Zwischenstand:
==== #!/bin/bash shopt -s nullglob mkdir -p skaliert
for file in *.[Jj][Pp][Gg] *.[Jj][Pp][Ee][Gg]; do echo "converting $file ..." newwidth=( $(identify "$file" | \ awk '{ si=gensub(".*JPEG *([0-9]+x[0-9]+)[^0-9].*", "\\1", 1, $0); split(si, a, "x"); printf("%i\n", a[1] / (a[2] / 576)); }' ) )
convert -size "720x576" xc:black \ -gravity Center -draw "image over 0,0 ${newwidth},576 $file" \ "skaliert/x576_${file}"; done
Habe dein Skript laufen lassen so wie du es schriebst. Läuft natürlich ;-) Zu deiner Frage: Ich gehe für den Dia-Schau-Video nur von 4:3 aus. Ich gehe da einfach nach besagtem Buch "Cinelerra kompakt" vor. Da ich das Programm noch nicht gut kenne mache ich noch wenig Experimente. Auch habe ich hier noch ganz viel Video-Material. Das soll dann mein erster Video, geschnitten mit Cinelerra werden. Gruß und noch mal herzlichen Dank, Kai
Hi David! On So, 21 Jun 2009, David Haller wrote:
Erstens sollte das Script mit '#!/bin/bash' beginnen
Warum? Wenn ich die SUSv3 richtig im Kopf habe, war im Script nichts, was Bash spezifisch war, sondern alle Shells hätten damit klar kommen sollen. Mit freundlichen Grüßen Christian -- hundred-and-one symptoms of being an internet addict: 249. You've forgotten what the outside looks like. -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo, Am Sam, 20 Jun 2009, Kai Krämer schrieb:
Ich möchte für meinen Vater eine Diaschau unter cinelerra erstellen. Laut "Cinelerra kopakt" von Marco Michely soll ich dafür das folgende Skript über meine Bilder jagen:
#/bin/sh mkdir skaliert for element in `ls . | grep -i jp*g$`; ^^^^^^^^^^^^^^^^^^^^^^ das haut's schon bei Leerzeichen in Dateinamen auf die Fresse, den Rest braucht man sich gar nicht erst angucken. do size=`identify ${element}` width=`echo ${size} | sed '+s+.*JPEG ++' | sed '+s+x.*++'` height=`echo ${size} | sed '+s+.JPEG [0-9]*x++' | sed '+s+DirectClass.*++'` rat_height=$((${height}/576)) tmp_width=$((${width} / ${rat_heigth})) new_width=$((${tmp_width}*9375/10000)) convert -resize "${new_width}x576!" -quality 100 -sharpen 20 ${element} skaliert/x576_${element} done
*urgs* Ist das gruselig. Da fang ich nichtmal an, das im Detail zu kommentieren.
Leider bekomme ich nur eine Fehlermeldung anstelle der gesizeten Bilder.
line 8: K1_001.jpg3647 5488x3647+0+0 8-bit /576: syntax error: invalid arithmetic operator (error token is ".jpg3647 5488x3647+0+0 8-bit /576")
Das wundert mich genau gar nicht. Das Script ist schlicht kaputt. HTH, -dnh -- Boah, war der [Arafat, nach ner Woche] hirntot. Der hätte hier gut noch Innenminister werden können. Aber locker. -- Hagen Rether -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
participants (3)
-
Christian Brabandt
-
David Haller
-
Kai Krämer