Mailinglist Archive: opensuse-de (1803 mails)
| < Previous | Next > |
Re: Bilder per Bash-Script konvertieren
- From: David Haller <dnh@xxxxxxxxxxxx>
- Date: Tue, 17 Nov 2009 01:06:45 +0100
- Message-id: <20091117000645.GE29495@xxxxxxxxxxxxxxxxxx>
Hallo,
Am Mon, 16 Nov 2009, Heinz W. Pahlke schrieb:
[..]
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@xxxxxxxxxxxx
Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken
Sie eine Mail an: opensuse-de+help@xxxxxxxxxxxx
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@xxxxxxxxxxxx
Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken
Sie eine Mail an: opensuse-de+help@xxxxxxxxxxxx
| < Previous | Next > |