bilder komprimieren
Tim
- cgi
hallo ihr wissenden
ein schönen samstag erst einmal! ihr sitzt hoffentlich im warmen?
so die frage, die mich zum verzweifeln bringt:
wie kann ich ein bild mittels perl/cgi komprimieren?
heißt also.
das bild zum upload ist 500x500 und xx kb.
mir zu groß.
möchte die kb und px verringern und erst dann speichern bzw. senden.
mit php ist das wohl kein problem.
da der kunde aber alles in perl haben will, muss das wohl so sein.
vielleicht jemand einen ansatz, oder aus zeitmagel so´n paar codesnippets?
alles was helfen könnte ist erwünscht.
vielen dank und ein schönes 1.advents wochenende!
mfg
tim
Hallo,
das bild zum upload ist 500x500 und xx kb.
mir zu groß.
möchte die kb und px verringern und erst dann speichern bzw. senden.
Ich verstehe nicht ganz, wie du dir das vorstellst? Wie soll Perl vom Server aus eine Grafik auf dem Computer verkleiner _bevor_ sie sich am Server befindet, oder habe ich etwas falsch verstanden, oder suchst du mit Perl eine Lösung, mit der du lokal eine Grafik verkleinern kannst?
Ein Kommandozeilenscript mit Image::Magick und Image::Size (beide standardmäßig nicht mit Perl ausgeliefert) kannst du haben. Ggf. wirst du es anpassen müssen, da es keine Unterverzeichnisse miteinbezieht.
#!/usr/bin/perl -w
use strict;
use Image::Magick;
use Image::Size;
my @grafiken = ();
my $x_faktor = 1.5;
my $y_faktor = 1.5;
opendir (DIR,'.') or die "Cant open directory : $!n";
while (defined($_ = readdir DIR)) {
if ($_ =~ /^.+?\.(jpe?g|gif|png)$/i) {
push @grafiken, $_;
}
}
closedir DIR;
foreach(@grafiken) {
my $image = Image::Magick->new;
my $img = $image->Read($_);
my ($x, $y) = imgsize($_);
my ($filename,$extension) = ($1,$2) if $_ =~ /^(.+?)\.(jpe?g|gif|png)$/i;
my ($width, $height) = ($x / $x_faktor, $y / $y_faktor);
$img = $image->Resize("$width x $height");
$img = $image->Write($filename.'.'.$extension);
print "Foto $filename.$extension in Arbeit...\n";
}
Markus.