Mailinglist Archive: opensuse-de (1803 mails)

< Previous Next >
Re: Bilder per Bash-Script konvertieren
  • From: David Haller <dnh@xxxxxxxxxxxx>
  • Date: Mon, 16 Nov 2009 01:41:55 +0100
  • Message-id: <20091116004155.GA31765@xxxxxxxxxxxxxxxxxx>
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@xxxxxxxxxxxx
Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken
Sie eine Mail an: opensuse-de+help@xxxxxxxxxxxx

< Previous Next >
Follow Ups
References