Bilder per Bash-Script konvertieren
Hallo, ich hänge schon wieder an der Bash-Programmierung fest :-( Anlass ist wieder, dass dvd-slideshow Probleme mit Transparenzen hat. Also gilt es einen Workaround auch für den Kenburns-Effekt zu finden. Gegeben ist ein Bild von 2295 x 1836 Pixel. Der Startpunkt soll bei +1977+843 liegen, wo ein Bild von 720x576 Pixel ausgeschnitten werden soll: Mit "convert -crop 720x576+1977+843 +repage bild.png bild_ausschnitt.png" ist das erst einmal kein Problem. Schrittweise soll der Ausschnitt aber so wachsen, dass nach 100 Bildern der Ausschnitt mit dem Originalbild identisch ist. Das letzte Bild würde also durch "convert -crop 2295x1836+0+0 +repage bild.png bild_ausschnitt.png" erstellt. (Ist natürlich überflüssig, erklärt aber das Prinzip.) Versucht habe ich es mit verschiedenen Variablen, um die "720x576+1977+843" schrittweise in die "2295x1836+0+0" zu überführen, aber bislang nur völlig unsinnige Ergebnisse erhalten. Startpunkt war -------------------------------------8<---------------------------------- #!/bin/sh i=1 while [ $i -lt 3 ] ; do convert -crop 720x576+$k+$j +repage seite_54_55.png seite_54_55-zoom-$i.png i=`expr $i` j=`expr $i + 2` k=`expr $i + 2` done ------------------------------------->8---------------------------------- weil ich dachte, mich so langsam an die Lösung herantasten zu können. Um die Dateien dann an dvd-slideshow verfüttern zu können, muss nach dem +repage noch ein "-resize 720x576 -filter lanczos' sowie für die Transparenz ein "-transparent 'Farbe'" eingefügt werden, aber dafür braucht es keine Variablen, ist also ganz einfach. Beste Grüße, Heinz. -- Buchsatz für Autoren. Vom Manuskript zum Buch www.pahlke-online.de Reiseführer und Reiseberichte: www.erlebnis-osteuropa.de Barrierefreies Webdesign: www.Pahlke-KunstWebDesign.de -- 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
Am Sonntag, 15. November 2009 20:32:26 schrieb Heinz W. Pahlke:
Hallo,
ich hänge schon wieder an der Bash-Programmierung fest :-(
Anlass ist wieder, dass dvd-slideshow Probleme mit Transparenzen hat. Also gilt es einen Workaround auch für den Kenburns-Effekt zu finden.
Zum Script kann ich nichts sagen. Da ich aber eine ähnliche Problemstellung habe, möchte ich dich fragen, ob du schon anere Slideshow-Programme ausprobiert hast? ZB videoporama und smile? Mir erschien kdenlive sehr interessant, ist für mich aber noch zu "beta". Al -- 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
Am Sun, 15 Nov 2009, Al Bogner schrieb
Zum Script kann ich nichts sagen. Da ich aber eine ähnliche Problemstellung habe, möchte ich dich fragen, ob du schon anere Slideshow-Programme ausprobiert hast?
ZB videoporama und smile? Mir erschien kdenlive sehr interessant, ist für mich aber noch zu "beta".
Ich würde kdenlive eher als Alpha bezeichnen, so absturzfreudig wie das Programm ist. Weder unter der 10.1 noch unter der 10.3 habe ich es ausreichend stabil zum Laufen gebracht, um damit ernsthaft Videos erstellen zu können. videoporama und smile kannte ich noch nicht. Getestet hatte ich mal diascope, das zwar sehr vielversprechend ist, sich aber doch noch in einer sehr frühen Entwicklungsphase befindet. Missfallen habe mir vor allem die teilweise noch sehr unsauberen Übergänge zwischen den verschiedenen Einstellungen. Ich befürchte aber ohnehin, dass auch diese Programme Probleme mit Transparenzen haben. Im Ausgangsbild eine transparente Farbe zu bestimmen, nützt nämlich anscheinend nichts. Jedenfalls habe ich keine funktionierende Lösung gefunden. Die Bilder fürs Rollen und Zoomen müssen vielmehr erst ausgeschnitten werden. Erst für diese Bilder darf dann eine transparente Farbe bestimmt werden. Leider fehlen mir die notwendigen Kenntnisse über die Internas der verschiedenen Bilddateiformate. So bleibt mir immer nur der Weg über Trial and Error, aber letztlich waren die Ergebnisse doch eindeutig. Im Prinzip ist es auch egal, ob ich die Umwandlung komplett mit dvd-slideshow vornehmen lasse oder einzelne Einstellungen vorher per Bash- oder Perl-Script als Bildfolgen erstelle und diese dann in dvd-slideshow einbinde. Beste Grüße, Heinz. -- Buchsatz für Autoren. Vom Manuskript zum Buch www.pahlke-online.de Reiseführer und Reiseberichte: www.erlebnis-osteuropa.de Barrierefreies Webdesign: www.Pahlke-KunstWebDesign.de -- 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
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hallo, wenngleich ich nicht zur Problemlösung beitragen kann, so möchte ich doch wenigstens kundtun, dass ich dieses Problem... Heinz W. Pahlke schrieb:
Ich würde kdenlive eher als Alpha bezeichnen, so absturzfreudig wie das Programm ist. Weder unter der 10.1 noch unter der 10.3 habe ich es ausreichend stabil zum Laufen gebracht, um damit ernsthaft Videos erstellen zu können.
... nicht teilen kann. Unter 11.1 und KDE4 läuft das Teil bei mir bislang ohne Absturz, ob beim Schneiden von gerenderten Animationen oder beim Input von DV-Cam per Firewire etc. Gruß Stefan - -- S T E F A N J U R I S C H - -------------------------------- System Engineer - VMware Support - Software Development - SIEGNETZ.IT GmbH Schneppenkauten 1a D-57076 Siegen Tel. +49 271 68193- 0 Fax: +49 271 68193-28 http://www.siegnetz.de Amtsgericht Siegen HRB4838 Geschäftsführer: Oliver Seitz Sitz der Gesellschaft ist Siegen - -------------------------------- Das Wort "WINDOWS" stammt aus einem alten Sioux-Dialekt und bedeutet: "Weißer Mann starrt durch Glasscheibe auf Sanduhr." The word "WINDOWS" originates from an old Sioux dialect and means: "White man staring through glass pane at hourglass." - -------------------------------- -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.9 (GNU/Linux) Comment: Using GnuPG with SUSE - http://enigmail.mozdev.org iEYEARECAAYFAksBETEACgkQqdb99cbyCz59YgCfckUY1TrR63xVagJAD6vOOF5J jdgAn1zERLp0Gmy2SsRfGsWdk3PvvVKt =8Q4w -----END PGP SIGNATURE----- -- This message has been scanned for viruses and dangerous content by MailScanner, and is believed to be clean. -- 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 Mon, 16 Nov 2009, Stefan Jurisch schrieb
wenngleich ich nicht zur Problemlösung beitragen kann, so möchte ich doch wenigstens kundtun, dass ich dieses Problem...
Heinz W. Pahlke schrieb:
Ich würde kdenlive eher als Alpha bezeichnen, so absturzfreudig wie das Programm ist. Weder unter der 10.1 noch unter der 10.3 habe ich es ausreichend stabil zum Laufen gebracht, um damit ernsthaft Videos erstellen zu können.
... nicht teilen kann. Unter 11.1 und KDE4 läuft das Teil bei mir bislang ohne Absturz, ob beim Schneiden von gerenderten Animationen oder beim Input von DV-Cam per Firewire etc.
Dafür habe ich kdenlive nie probiert, weil mich nur das Zusammenstellen von Einzelbildern zu Videos interessierte. Unter Suse 10.0 dachte ich noch, die Instabilität läge daran, dass ich seit der 5.0 immer nur geupdated und gerade in der Anfangszeit auch ziemlich wild an rpm vorbei installiert hatte. Nach einem Festplattencrash habe ich dann doch auf das Einspielen des Backups verzichtet und die 10.3 neu installiert. Jetzt stürzt kdenlive zwar bei anderen Aktionen ab, aber es stürzt eben sehr häufig ab. Okay, ich verwende kein KDE, sondern installiere von KDE nur, was andere Programme unbedingt benötigen. Beste Grüße, Heinz. -- Buchsatz für Autoren. Vom Manuskript zum Buch www.pahlke-online.de Reiseführer und Reiseberichte: www.erlebnis-osteuropa.de Barrierefreies Webdesign: www.Pahlke-KunstWebDesign.de -- 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
Am Montag, 16. November 2009 09:32:48 schrieb Heinz W. Pahlke:
Am Sun, 15 Nov 2009, Al Bogner schrieb
Zum Script kann ich nichts sagen. Da ich aber eine ähnliche Problemstellung habe, möchte ich dich fragen, ob du schon anere Slideshow-Programme ausprobiert hast?
ZB videoporama und smile? Mir erschien kdenlive sehr interessant, ist für mich aber noch zu "beta".
Ich würde kdenlive eher als Alpha bezeichnen, so absturzfreudig wie das Programm ist. Weder unter der 10.1 noch unter der 10.3 habe ich es ausreichend stabil zum Laufen gebracht, um damit ernsthaft Videos erstellen zu können.
Also abgestürzt ist es mir nie, aber manchmal wurde einfach nichts gerendert, speziell mit H264. Den Beta-Eindruck konnte ich nicht los werden, aber so schlecht sieht es dann auch nicht aus. Interessant ist eventuell auch http://www.kde-apps.org/content/show.php/akw-qt?content=104980 Das müsste man aber anpassen.
videoporama und smile kannte ich noch nicht. Getestet hatte ich mal diascope, das zwar sehr vielversprechend ist, sich aber doch noch in einer sehr frühen Entwicklungsphase befindet. Missfallen habe mir vor allem die teilweise noch sehr unsauberen Übergänge zwischen den verschiedenen Einstellungen.
Ich habe kein Repo für diascope gefunden und ohne Repo installiere ich nichts mehr, das ist meistens noch nicht sehr ausgereift. videoporama solltest du dir aber ansehen. Es gibt bei Packman für 11.1 und 11.2 ein Repo. http://freshmeat.net/projects/videoporama/ "Zoom und Reisen über ein Bild" habe ich leider nicht geschafft, aber vielleicht klappte es bei dir. Unter 11.2 habe ich es nicht probiert. Dafür brauche ich erst einen stärkeren Rechner zum Testen. Al -- 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
Am Mon, 16 Nov 2009, Al Bogner schrieb
Am Montag, 16. November 2009 09:32:48 schrieb Heinz W. Pahlke:
Also abgestürzt ist es mir nie, aber manchmal wurde einfach nichts gerendert, speziell mit H264. Den Beta-Eindruck konnte ich nicht los werden, aber so schlecht sieht es dann auch nicht aus. Interessant ist eventuell auch http://www.kde-apps.org/content/show.php/akw-qt?content=104980 Das müsste man aber anpassen.
Dazu müsste ich erst einmal KDE4 installieren. KDE hat mich aber noch nie interessiert. dvd-slideshow gefällt mir gerade deshalb so gut, weil es mich von den ganzen GUI verschont.
Ich habe kein Repo für diascope gefunden und ohne Repo installiere ich nichts mehr, das ist meistens noch nicht sehr ausgereift.
Gibt es auch nicht. Ob Repo oder nicht, ist mir eigentlich ziemlich egal. Wenn ein Programm genau das tut, was ich will, nehme ich es. Und wenn nicht, wird es wieder gelöscht.
videoporama solltest du dir aber ansehen. Es gibt bei Packman für 11.1 und 11.2 ein Repo.
Hier werkelt aber noch eine 10.3. Wenn es keine allzu abschreckenden Berichte über die 11.2 gibt, update ich in den nächsten Wochen auf die 11.2, sonst auf die 11.1.
http://freshmeat.net/projects/videoporama/ "Zoom und Reisen über ein Bild" habe ich leider nicht geschafft, aber vielleicht klappte es bei dir. Unter 11.2 habe ich es nicht probiert. Dafür brauche ich erst einen stärkeren Rechner zum Testen.
Dann kann ich es vergessen. Beste Grüße, Heinz. -- Buchsatz für Autoren. Vom Manuskript zum Buch www.pahlke-online.de Reiseführer und Reiseberichte: www.erlebnis-osteuropa.de Barrierefreies Webdesign: www.Pahlke-KunstWebDesign.de -- 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
Am Montag, 16. November 2009 22:35:09 schrieb Heinz W. Pahlke: Hallo Heinz,
Am Montag, 16. November 2009 09:32:48 schrieb Heinz W. Pahlke:
Also abgestürzt ist es mir nie, aber manchmal wurde einfach nichts gerendert, speziell mit H264. Den Beta-Eindruck konnte ich nicht los werden, aber so schlecht sieht es dann auch nicht aus. Interessant ist eventuell auch http://www.kde-apps.org/content/show.php/akw-qt?content=104980 Das müsste man aber anpassen.
Dazu müsste ich erst einmal KDE4 installieren. KDE hat mich aber noch nie interessiert. dvd-slideshow gefällt mir gerade deshalb so gut, weil es mich von den ganzen GUI verschont.
Wenn du dein Skript fertig hast, dann bin ich daran interessiert ;-) Ich bin bis jetzt noch nicht mit dvd-slideshow weitergekommen. Ich würde mir folgendes wünschen: Gegeben: mp3-file Die Länge der Musik bestimmt automatisch die Dauer des einzelnen Bildes, bzw. wenn du willst des Zooms im einzelnen Bild. Die Übergänge sollten "effektvoll" und zufällig sein, wie zB bei Gwenview (zB Würfel). Klar, kann man die Dauer auch manuell berechnen. Optimal wäre wenn man das dass in ein Videoschnitt-Programm importieren könnte und an der Timeline anpassen könnte. Ausgabe sollte in H264/X264 und _HDTV_-Auflösung (1280x720) sein. Und mit HDTV bleibt da nicht viel übrig. Ich komme auch mit reduzierten Vorstellungen mit dvd-slideshow nicht weiter. Es würde mich aber trotzdem interessieren, was du dir so überlegt hast. Vielleicht ist es ein Kompromiss für mich.
Ich habe kein Repo für diascope gefunden und ohne Repo installiere ich nichts mehr, das ist meistens noch nicht sehr ausgereift.
Gibt es auch nicht. Ob Repo oder nicht, ist mir eigentlich ziemlich egal. Wenn ein Programm genau das tut, was ich will, nehme ich es. Und wenn nicht, wird es wieder gelöscht.
Wenn es wirklich gut ist, brauche ich auch kein Repo. Gute Sachen ohne Repo sind aber eher selten.
videoporama solltest du dir aber ansehen. Es gibt bei Packman für 11.1 und 11.2 ein Repo.
Hier werkelt aber noch eine 10.3. Wenn es keine allzu abschreckenden Berichte über die 11.2 gibt, update ich in den nächsten Wochen auf die 11.2, sonst auf die 11.1.
LOL, ich habe kürzlich auch einige Produktivrechner von 10.3 auf 11.1 geändert. Es kommt immer darauf an, was man braucht. Mit einem Testserver bin ich mit 11.2 noch nicht sehr weit. Es fehlen einfach Pakete, wie zB leafnode oder asterisk.
http://freshmeat.net/projects/videoporama/ "Zoom und Reisen über ein Bild" habe ich leider nicht geschafft, aber vielleicht klappte es bei dir. Unter 11.2 habe ich es nicht probiert. Dafür brauche ich erst einen stärkeren Rechner zum Testen.
Dann kann ich es vergessen.
Hoffentlich kein Missverständnis. Es ist durchaus denkbar, dass ich die Bedienung nicht auf die Schnelle verstanden habe. Mit einem 500 MHz-Rechner machen Diashows zum Testen keinen Spaß. Ich konzentriere mich mehr auf kdenlive, da ich hier die besseren Möglichkeiten sehe. Mir gefällt das Konzept bei kdenlive. Andere Videoschnitt-Programme haben mir nach einem kurzen Blick nicht so gefallen. Kann aber sein, dass die gar nicht so übel sind. Ich muss mal Zeit haben, die konkreten Probleme / Wünsche mit kdenlive aufzuzeigen. Al -- 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 Son, 15 Nov 2009, Heinz W. Pahlke schrieb:
Gegeben ist ein Bild von 2295 x 1836 Pixel. Der Startpunkt soll bei +1977+843 liegen, wo ein Bild von 720x576 Pixel ausgeschnitten werden soll:
Mit "convert -crop 720x576+1977+843 +repage bild.png bild_ausschnitt.png" ist das erst einmal kein Problem.
Schrittweise soll der Ausschnitt aber so wachsen, dass nach 100 Bildern der Ausschnitt mit dem Originalbild identisch ist.
Das letzte Bild würde also durch "convert -crop 2295x1836+0+0 +repage bild.png bild_ausschnitt.png" erstellt. (Ist natürlich überflüssig, erklärt aber das Prinzip.)
Das Problem ist, die Zwischenschritte zu berechnen, und da die bash nur Integer kann ... [..]
i=`expr $i` j=`expr $i + 2` k=`expr $i + 2`
expr ist portabel, aber wenn du die bash verwendest, nimm besser eine der internen Möglichkeiten: i=$(( i + 1 )) i=$[ i + 1 )) Für dein Bilder erstellen aber: ==== #!/usr/bin/perl -w use strict; use POSIX qw(ceil); my $frames = 25; my ( $sw, $sh, $ew, $eh, $sx, $sy, $ex, $ey ) = ( 720, 576, 2295, 1836, 1977, 843, 0, 0); #### my $wstep = ($ew - $sw) / ($frames-1); my $hstep = ($eh - $sh) / ($frames-1); my $xstep = ($ex - $sx) / ($frames-1); my $ystep = ($ey - $sy) / ($frames-1); my ( $w, $h, $x, $y ) = ( $sw, $sh, $sx, $sy ); for my $i ( 1 .. ($frames - 1) ) { print qq[convert -crop "${w}x${h}+${x}+${y}" seite_54_55.png "seite_54_55-zoom-${i}.png"\n]; $w = ceil($w + $wstep); $h = ceil($h + $hstep); $x = ceil($x + $xstep); $y = ceil($y + $ystep); } print qq[convert -crop "${ew}x${eh}+${ex}+${ey}" seite_54_55.png "seite_54_55-zoom-${frames}.png"\n]; ===== Die Ausgabe kannst du an die sh verfüttern (per Pipe) oder ich mail dir noch ne Version, die convert selber aufruft. Melde dich ggfs. per PM. HTH, -dnh -- "What, you don't think "insmod emacs" is a good idea?" -- Joe Moore -- 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 Mon, 16 Nov 2009, David Haller schrieb
Das Problem ist, die Zwischenschritte zu berechnen, und da die bash nur Integer kann ...
Da ich ja die verschiedenen Pixelwerte kenne, wäre es auch kein Problem auszurechnen, dass z.B. die Bildbreite um n mal soundsoviel Pixel wachsen müsse. Das gleiche natürlich dann auch für die Bildhöhe und die x- sowie y-Werte.
==== #!/usr/bin/perl -w use strict; use POSIX qw(ceil);
my $frames = 25;
my ( $sw, $sh, $ew, $eh, $sx, $sy, $ex, $ey ) = ( 720, 576, 2295, 1836, 1977, 843, 0, 0);
####
my $wstep = ($ew - $sw) / ($frames-1); my $hstep = ($eh - $sh) / ($frames-1); my $xstep = ($ex - $sx) / ($frames-1); my $ystep = ($ey - $sy) / ($frames-1);
my ( $w, $h, $x, $y ) = ( $sw, $sh, $sx, $sy );
for my $i ( 1 .. ($frames - 1) ) { print qq[convert -crop "${w}x${h}+${x}+${y}" seite_54_55.png "seite_54_55-zoom-${i}.png"\n]; $w = ceil($w + $wstep); $h = ceil($h + $hstep); $x = ceil($x + $xstep); $y = ceil($y + $ystep); } print qq[convert -crop "${ew}x${eh}+${ex}+${ey}" seite_54_55.png "seite_54_55-zoom-${frames}.png"\n]; =====
Wahnsinn. Im Prinzip verstehe ich sogar, was da passiert.
Die Ausgabe kannst du an die sh verfüttern (per Pipe) oder ich mail
Jaaaaa. Bis zur Pipe | komme ich noch. Bzw. ist lenke das Ergebnis in eine Datei um. Aber wie arbeite ich diese Datei nun zeilenweise ab?
dir noch ne Version, die convert selber aufruft. Melde dich ggfs. per PM.
Da ich ohnehin auf deine Mail geantwortet habe, kann ich dich auch gleich so um dieses Script bitten. Beste Grüße, Heinz. -- Buchsatz für Autoren. Vom Manuskript zum Buch www.pahlke-online.de Reiseführer und Reiseberichte: www.erlebnis-osteuropa.de Barrierefreies Webdesign: www.Pahlke-KunstWebDesign.de -- 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 Mon, 16 Nov 2009, Heinz W. Pahlke schrieb:
Am Mon, 16 Nov 2009, David Haller schrieb
Wahnsinn. Im Prinzip verstehe ich sogar, was da passiert.
*g*
Die Ausgabe kannst du an die sh verfüttern (per Pipe) oder ich mail
Jaaaaa. Bis zur Pipe | komme ich noch. Bzw. ist lenke das Ergebnis in eine Datei um. Aber wie arbeite ich diese Datei nun zeilenweise ab?
script_mit_print | bash -x
dir noch ne Version, die convert selber aufruft. Melde dich ggfs. per PM.
Da ich ohnehin auf deine Mail geantwortet habe, kann ich dich auch gleich so um dieses Script bitten.
==== UNGETESTET ==== #!/usr/bin/perl -w use strict; use POSIX qw(ceil); use Getopt::Long; my $frames = 25; my ( $sw, $sh, $ew, $eh, $sx, $sy, $ex, $ey ) = ( 720, 576, 2295, 1836, 1977, 843, 0, 0); #### my $dry_run = 0; GetOptions( "n" => \$dry_run ) or die "$!\n"; sub runcmd { my $ret = 0; if( ! $dry_run ) { print "\n", "=" x 68, "\nRunning: ", join(" ", @_), "\n\n"; system(@_); $ret = $?; if( $ret == -1 ) { print STDERR "failed to execute: $!\n"; } elsif ($ret & 127) { printf STDERR "\nchild died with signal %d, %s coredump\n", ($ret & 127), ($ret & 128) ? "with coredump" : ""; } } else { print "\n", "=" x 68, "\nWould run: ", join(" ", @_), "\n\n"; } return $ret == 0; } my $wstep = ($ew - $sw) / ($frames-1); my $hstep = ($eh - $sh) / ($frames-1); my $xstep = ($ex - $sx) / ($frames-1); my $ystep = ($ey - $sy) / ($frames-1); my ( $w, $h, $x, $y ) = ( $sw, $sh, $sx, $sy ); for my $i ( 1 .. ($frames - 1) ) { runcmd("convert", "-crop", "${w}x${h}+${x}+${y}", "seite_54_55.png", "seite_54_55-zoom-${i}.png"); $w = ceil($w + $wstep); $h = ceil($h + $hstep); $x = ceil($x + $xstep); $y = ceil($y + $ystep); } runcmd("convert", "-crop", "${ew}x${eh}+${ex}+${ey}", "seite_54_55.png" "seite_54_55-zoom-${frames}.png"); ===== HTH, -dnh -- Beware of bugs in the above code; I have only proved it correct, not tried it. - Donald Knuth -- 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 Mon, 16 Nov 2009, David Haller schrieb
script_mit_print | bash -x
Danke :-) Was ist eigentlich der praktische Unterschied zu "bash < Datei"?
==== UNGETESTET ====
Nochmals Danke :-)) Aber getestet habe ich es noch nicht, weil in der ganzen Sache noch ein Gedankenfehler stecken muss :-( Um alles mal übersichtlicher zu machen, habe ich die Zahlen etwas verändert. Gestartet wird mit: convert -crop "720x576+1200+200" datei.png datei-zoom-1.png Ziel ist nach 200 Zwischenschritten: convert -crop "2300x1840+0+0" datei.png datei-zoom-200.png Tatsächlich werden +200 in 1er-Schritten und +1200 in 6er-Schritten nur bis kurz vor dem Ende heruntergezählt. Noch stärker trifft es die 720x576 zu. Die 720 werden in 8er-Schritten und die 576 in 7er-Schritten hochgezählt. Vor allem die 576 läuft aber völlig aus dem Ruder und klettert bis auf 1962 statt 1840 :-( Hier die letzten convert-Durchgänge: convert -crop "2280x1941+30+5" datei.png datei-zoom-196.png convert -crop "2288x1948+24+4" datei.png datei-zoom-197.png convert -crop "2296x1955+18+3" datei.png datei-zoom-198.png convert -crop "2304x1962+12+2" datei.png datei-zoom-199.png convert -crop "2300x1840+0+0" datei.png datei-zoom-200.png Grund sind offenbar verkehrte Zu- und Abnahme des crop-Formates und der x- und y-Verschiebungen. Das Seitenverhältnis müsste nämlich immer 5:4 betragen, verändert sich zwischendurch jedoch ganz erheblich. Bei der Datei datei-zoom-196.png z.B. ist es dagegen ein Seitenverhältnis von 5:4,26. Jetzt bin ich jedenfalls erst einmal ratlos, weil mir noch völlig unklar ist, wo der Denkfehler liegen kann. Beste Grüße, Heinz. -- Buchsatz für Autoren. Vom Manuskript zum Buch www.pahlke-online.de Reiseführer und Reiseberichte: www.erlebnis-osteuropa.de uarrierefreies Webdesign: www.Pahlke-KunstWebDesign.de -- 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 Mon, 16 Nov 2009, Heinz W. Pahlke schrieb: [..]
Jetzt bin ich jedenfalls erst einmal ratlos, weil mir noch völlig unklar ist, wo der Denkfehler liegen kann.
Bei mir. Hab mit Ganzzahlen gerechnet. Bin ich blöd. Jetzt aber: ==== #!/usr/bin/perl -w use strict; use File::Basename; my $frames = 200; my ( $sw, $sh, $ew, $eh, $sx, $sy, $ex, $ey ) = ( 720, 576, 2300, 1840, 1200, 200, 0, 0); my $input = "seite_54_55.png"; my ($basename, $p, $ext) = fileparse($input, qr/\.(png|jpg|gif)/i); my $outext = "png"; #### my $wstep = ($ew - $sw) / ($frames-1); my $hstep = ($eh - $sh) / ($frames-1); my $xstep = ($ex - $sx) / ($frames-1); my $ystep = ($ey - $sy) / ($frames-1); my ( $w, $h, $x, $y ) = ( $sw, $sh, $sx, $sy ); for my $i ( 1 .. $frames - 1 ) { printf "convert -crop '%dx%d+%d+%d' '%s' '%s-zoom-%d.%s'\n", $w, $h, $x, $y, $input, $basename, $i, $outext; $w += $wstep; $h += $hstep; $x += $xstep; $y += $ystep; } printf "convert -crop '%dx%d+%d+%d' '%s' '%s-zoom-%d.%s'\n", $ew, $eh, $ex, $ey, $input, $basename, $frames, $outext; ==== Beim letzten Bild kann's nochmal Sprünge von 1px geben, je nachdem wie die Werte vom vorletzten gerundet werden. Deswegen ist das letzte Bild aus der Schleife rausgenommen, damit man auf jedenfall bei den Zielgeometrieangaben ($ew, $eh, $ex, $ey) landet. $ perl t_convert.pl | headntail -3 convert -crop '720x576+1200+200' 'seite_54_55.png' 'seite_54_55-zoom-1.png' convert -crop '727x582+1193+198' 'seite_54_55.png' 'seite_54_55-zoom-2.png' convert -crop '735x588+1187+197' 'seite_54_55.png' 'seite_54_55-zoom-3.png' convert -crop '2284x1827+12+2' 'seite_54_55.png' 'seite_54_55-zoom-198.png' convert -crop '2292x1833+6+1' 'seite_54_55.png' 'seite_54_55-zoom-199.png' convert -crop '2300x1840+0+0' 'seite_54_55.png' 'seite_54_55-zoom-200.png' HTH, -dnh, Zufallssig :) -- Perl. Die einzige interpretierte Sprache, wo alle Programme Closed Source sind, weil es keiner lesen kann. -- Till Potinius -- 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
Am Dienstag, 17. November 2009 01:06:45 schrieb David Haller:
$ perl t_convert.pl | headntail -3 convert -crop '720x576+1200+200' 'seite_54_55.png' 'seite_54_55-zoom-1.png' convert -crop '727x582+1193+198' 'seite_54_55.png' 'seite_54_55-zoom-2.png' convert -crop '735x588+1187+197' 'seite_54_55.png' 'seite_54_55-zoom-3.png' convert -crop '2284x1827+12+2' 'seite_54_55.png' 'seite_54_55-zoom-198.png' convert -crop '2292x1833+6+1' 'seite_54_55.png' 'seite_54_55-zoom-199.png' convert -crop '2300x1840+0+0' 'seite_54_55.png' 'seite_54_55-zoom-200.png'
Ich habe das Script zu wenig verfolgt, aber mir fällt dazu ein: Digitalkameras haben ja verschiedene Formate, und DVD-Format gibt es auch 4:3 bzw. 16:9, auch DSLR sind nicht exakt 2:3 Man müsste also das Bild in der Regel zentriert beschneiden, speziell bei 16:9 Den Verschnitt könnte man zum Zoomen benutzen. Damit die Pixel letztlich sicher stimmen würde ich ein ! verwenden, also 720x576! Kann das Script von beliebiger Originalgröße ausgehen? @Heinz: dvd-slideshow gibt es noch nicht für 11.2 Al -- 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 Die, 17 Nov 2009, Al Bogner schrieb:
Kann das Script von beliebiger Originalgröße ausgehen?
Das errechnet lediglich die Zwischenschritte zwischen den vorgegebenen Pixelwerten. Die Skalierung auf die Zielgröße fehlt ja auch noch (zusätzliches -geometry o.ä. im ausgegebenen 'convert' Aufruf). Heinz will ja auch noch die Transparenzfarbe setzen. Größen und Ausgabeformat könnte man noch als Optionen realisieren. -dnh -- http://www.lawblog.de/index.php/archives/2008/02/01/ich-hatte-mal-einen-linu... -- 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 Tue, 17 Nov 2009, David Haller schrieb
Das errechnet lediglich die Zwischenschritte zwischen den vorgegebenen Pixelwerten. Die Skalierung auf die Zielgröße fehlt ja auch noch (zusätzliches -geometry o.ä. im ausgegebenen 'convert' Aufruf). Heinz will ja auch noch die Transparenzfarbe setzen.
Das sind dann nur noch Kleinigkeiten. Entweder man ergänzt im Perlskript die printf-Zeilen oder fügt die Optionen nachträglich ein. Ich habe die printf-Zeilen z.B. auf printf "convert -crop '%dx%d+%d+%d' +repage -resize 720x576\\! -filter lanczos '%s' '%s-zoom-%d.%s'\n", erweitert. Ob das +repage wirklich notwendig ist, weiß ich nicht, aber es schadet auch nichts. Beim Filter muss man herumprobieren, was die besten Ergebnisse bringt. Und das \\! erzwingt das Format, auch wenn sich dadurch eventuell die Seitenverzähltnisse ändern. (Die doppelten Backslashs werden benötigt, um das Ausrufezeichen sowohl beim Ausführen des Perlskriptes als auch der anschließenden Verfütterung an ImageMagick zu schützen.) Bei dem diesmal verwendeten Ausgangsbild hat es mit der Transparenz auch so geklappt. Sonst müsste noch ein -transparent 'Farbe' eingefügt werden. Da ich das Ergebnis des Perlskriptes in eine Datei umlenke und diese dann an die Bash pipe, habe ich die Änderungen dann auch schon mit dem vim in dieser Datei vorgenommen. Das beides jetzt vor allem für das Archiv. Beste Grüße, Heinz. -- Buchsatz für Autoren. Vom Manuskript zum Buch www.pahlke-online.de Reiseführer und Reiseberichte: www.erlebnis-osteuropa.de Barrierefreies Webdesign: www.Pahlke-KunstWebDesign.de -- 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
Am Tue, 17 Nov 2009, Al Bogner schrieb
@Heinz: dvd-slideshow gibt es noch nicht für 11.2
Die dvd-slideshow-0.8.2-2.pm.1 für Suse 10.3 war ohnehin nicht das Gelbe vom Ei. Zum einen erforderte sie ein -nocleanup und zum anderen war der Jitter-Eeffekt doch ziemlich heftig. Der -nocleanup erfordernde Bug wurde erst in der 0.8.3 gefixt und in der 0.8.3 ist auch der Jitter-Effekt sichtbar weniger ausgeprägt. Von daher nutze ich ohnehin seit längerem nur die Entwicklerversionen. Die 0.8.3-svn-104 läuft hier jedenfalls absolut problemlos. Da es sich lediglich um einige Skripte handelt, gibt es auch keine Probleme, diese Version parallel in /usr/local/bin zu installieren. Beste Grüße, Heinz. -- Buchsatz für Autoren. Vom Manuskript zum Buch www.pahlke-online.de Reiseführer und Reiseberichte: www.erlebnis-osteuropa.de Barrierefreies Webdesign: www.Pahlke-KunstWebDesign.de -- 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 Tue, 17 Nov 2009, David Haller schrieb
Bei mir. Hab mit Ganzzahlen gerechnet. Bin ich blöd. Jetzt aber:
Nachdem ich gestern nacht den PC heruntergefahren hatte, ließ es mir doch keine Reihe und ich habe mir mal das ganze Szenario aufgezeichnet. Und da fiel mir dann auch der Denkfehler auf.
==== #!/usr/bin/perl -w [Script]
Ich habe heute den ganzne Tag damit herumprobiert, d.h. mit verschiedenen Zahlenwerten und unterschiedlich vielen Zwischenschritten. Toll :-) Jetzt funktioniert es wirklich wie gewünscht. Vielen Dank :-)) Selbst hätte ich es nie fertiggebracht.
Beim letzten Bild kann's nochmal Sprünge von 1px geben, je nachdem wie die Werte vom vorletzten gerundet werden. Deswegen ist das letzte Bild aus der Schleife rausgenommen, damit man auf jedenfall bei den Zielgeometrieangaben ($ew, $eh, $ex, $ey) landet.
Ein wenig Handarbeit ist außerdem auch kein Problem. Beste Grüße, Heinz. -- Buchsatz für Autoren. Vom Manuskript zum Buch www.pahlke-online.de Reiseführer und Reiseberichte: www.erlebnis-osteuropa.de Barrierefreies Webdesign: www.Pahlke-KunstWebDesign.de -- 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 Heinz, On Sunday 15 November 2009 20:32:26 Heinz W. Pahlke wrote:
Versucht habe ich es mit verschiedenen Variablen, um die "720x576+1977+843" schrittweise in die "2295x1836+0+0" zu überführen, aber bislang nur völlig unsinnige Ergebnisse erhalten.
Das ist ein Problem fuer den Bresenham-Algorithmus. Der ist "eigentlich" dazu da eine Line von A nach B auf dem Bildschirm zu zeichnen ohne Floating-Point nutzen zu muessen. Sehr einfaches Beispiel in Python: #!/usr/bin/python x0 = 10 x1 = 20 y0 = 5 y1 = 8 tx = 0 x = x0 y = y0 dx = x1 - x0 dy = y1 - y0 # bis hierher ist es noch einfach while x <= x1: print x, "/", y # oder sonstwas tx = tx + dy if tx >= dy: y = y + 1 tx = tx - dx x = x + 1 Oder in Bash: #!/bin/bash declare -i x0=10 declare -i x1=20 declare -i y0=5 declare -i y1=8 declare -i tx=0 declare -i x=$x0 declare -i y=$y0 declare -i dx=$((x1 - x0)) declare -i dy=$((y1 - y0)) # bis hierher ist es noch einfach while ((x <= x1)); do echo $x "/" $y # oder sonstwas ((tx += dy)) if ((tx >= dy)); then ((y++)) ((tx -= dx)) fi ((x++)) done Ist dy > dx muss man etwas tricksen, also swappen und y durchlaufen lassen. Das gilt natuerlich auch fuer x1 < x0 oder y1 < y0. Fuer dein Problem sieht der Algorithmus ganz aehnlich aus.
i=`expr $i` j=`expr $i + 2` k=`expr $i + 2`
Du hast Bash gesagt, dann wuerde ich hier lieber wie oben schon gezeigt etwas schreiben wie ((j = i + 2)) ((k = i + 2)) usw. Das ist viel besser lesbar. Ich hoffe ich konnte etwas helfen, ohne gleich ein funktionierendes Script fuer dein Problem zu liefern. BTW, kennst du das Bash Scripting Guide von TLDP (The Linux Documentation Project)? Roman -- Roman Fietze Telemotive AG Büro Mühlhausen Breitwiesen 73347 Mühlhausen Tel.: +49(0)7335/18493-45 http://www.telemotive.de -- 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 Roman, Am Mon, 16 Nov 2009, Roman Fietze schrieb
Sehr einfaches Beispiel in Python:
Interessant, wie man ein problem lösen kann. Leider habe ich von Python noch weniger Ahnung.
Ich hoffe ich konnte etwas helfen, ohne gleich ein funktionierendes Script fuer dein Problem zu liefern.
Nein, nicht wirklich. Aber ein wenig weiter bin ich ja inzwischen. Bloß der Schluss fehlt noch, obwohl ich heute nachmittag zwei Stunden gegoogled und probiert habe. Ich habe inzwischen eine Datei mit Zeilen wie den folgenden: convert -crop "720x576+1977+843" seite_54_55.png "seite_54_55-zoom-1.png" convert -crop "786x629+1895+808" seite_54_55.png "seite_54_55-zoom-2.png" convert -crop "852x682+1813+773" seite_54_55.png "seite_54_55-zoom-3.png" Die müssten nun nacheinander abgearbeitet werden.
BTW, kennst du das Bash Scripting Guide von TLDP (The Linux Documentation Project)?
Ja. Ich habe ihn mir vor längerem sogar komplett heruntergeladen. Aber mit meinem schlechten Englisch ist es nahezu unmöglich, etwas ausreichend zielgerichtet zu suchen. Und über 800 Seiten lassen sich nun einmal nicht so einfach durchblättern. Beste Grüße, Heinz. -- Buchsatz für Autoren. Vom Manuskript zum Buch www.pahlke-online.de Reiseführer und Reiseberichte: www.erlebnis-osteuropa.de Barrierefreies Webdesign: www.Pahlke-KunstWebDesign.de -- 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
Am Mon, 16 Nov 2009, Heinz W. Pahlke schrieb
Ich habe inzwischen eine Datei mit Zeilen wie den folgenden:
convert -crop "720x576+1977+843" seite_54_55.png "seite_54_55-zoom-1.png" convert -crop "786x629+1895+808" seite_54_55.png "seite_54_55-zoom-2.png" convert -crop "852x682+1813+773" seite_54_55.png "seite_54_55-zoom-3.png"
Die müssten nun nacheinander abgearbeitet werden.
Kaum hatte ich die Mail gesendet, fiel mir eine Möglichkeit ein: "bash < datei" Der erste Versuch ist gerade durchgelaufen. Sieht bereits sehr gut aus, lediglich die Zahl der Zwischenschritte muss ich noch erhöhen. Das es mit 25 Bildern ruckelt, war aber auch klar. Beste Grüße und allen Helfern vielen Dank, Heinz. -- Buchsatz für Autoren. Vom Manuskript zum Buch www.pahlke-online.de Reiseführer und Reiseberichte: www.erlebnis-osteuropa.de Barrierefreies Webdesign: www.Pahlke-KunstWebDesign.de -- 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 (5)
-
Al Bogner
-
David Haller
-
Heinz W. Pahlke
-
Roman Fietze
-
Stefan Jurisch