$xNeTworKx: Skript zum Bearbeiten eines Bildes

Beitrag lesen

Hallo,

ich benötige ein Perl-Skript, das jpg-Bilder in der Größe ändert,
z.B. auf eine bestimmte Breite von 100 Pixeln, zwecks Einsparung
von Speicherplatz und Ladezeit.

Hab ich.

Beispielcode ?

Ja, mit Hilfe des Modules GD, weil ich unter Linux Image::Magick große Schwierigkeiten beim Installieren hatte.
Du benötigst zusätzlich das Modul GD. Nachteil: Mit GD kannst du keine gifs bearbeiten.

#!/usr/bin/perl -w

use strict;
use GD;
my $verkleinerungsfaktor = 6;

opendir(DIR,'.') or die "Cant open directory : $!\n";
while (defined($_ = readdir(DIR)))  {
     if ($_ =~ /^.+?.jpg$/i)  {
     push @grafiken, $_;
     }
}
closedir DIR;

my $anzahl = @grafiken;
for (my $i = 0; $i < $anzahl; $i++)  {
my $image = newFromJpeg GD::Image($grafiken[$i]);
my($srcW,$srcH) = $image->getBounds();
my($destW,$destH) = ($srcW /$verkleinerungsfaktor, $srcH / $verkleinerungsfaktor);
my $smallimage = new GD::Image($destW,$destH);
      $smallimage->copyResized($image,0,0,0,0,$destW,$destH,$srcW,$srcH);
my $picdata = $smallimage->jpeg(50);

open (PIC,">small" . $grafiken[$i]) or die "$!\n";
binmode PIC;
print PIC $picdata;
close PIC;

oder eine Lösung mit Image::Magick und Image::Size (Diese Module musst du auch zusätzlich installieren)

#!/usr/bin/perl -w

use strict;
use Image::Magick;
use Image::Size;

my @grafiken = ();
my $verkleinerungsfaktor = 2.5;

opendir(DIR,'.') or die "Cant open directory : $!\n";
     while (defined($_ = readdir(DIR)))  {
     if ($_ =~ /^.+?.jpg$/i)  {
     push @grafiken, $_;
     }
}
closedir DIR;
foreach (@grafiken)  {
my $image = Image::Magick->new;
my $img = $image->Read(filename=>$_);
my ($x, $y) = imgsize($_);
my ($width, $height) = ($x / $verkleinerungsfaktor, $y / $verkleinerungsfaktor);
$img = $image->Resize("$width x $height");
$img = $image->Write(filename=>$_);
}

Du musst die Scripte natürlich auf deine Vorhaben anpassen.
Lies auch zusätzlich http://search.cpan.org/author/LDS/GD-2.06/GD.pm um das erste Script zu verstehen, und die Möglichkeiten von GD zu erkennen.

$xNeTworKx.

--
Mit Computern lösen wir Probleme, die wir ohne sie gar nicht hätten.