$xNeTworKx: Image::magick produziert nur grottenschlechte Bilder...

Hola,
zum ersten bin ich froh, dass das Forum wieder online ist, da ich seit Tagen mit anderen Foren nicht mehr bei meinem Problem weiterkomme und ihr seit jetzt sozusagen meine letzte Hoffnung.
Also ich habe ein kleines Script, dass mir Bilder (die später mal geuploadet werden) verkleinern soll. Ich brauche Image::Magick, da GD ja keine Gifs bearbeiten kann und Imager bei meinem Provider nicht installiert ist.
Das vom Script produzierten Bilder sind für die Katz, aber ich weiß nicht wieso. Hier 2 Beispiele:
Vorher: http://test.acid4u.com/test/ax396.jpg
Nachher: [lin:http://test.acid4u.com/test/ax396neu.jpg]
Vorher: http://test.acid4u.com/test/pic05.jpg
Nachher: http://test.acid4u.com/test/pic05neu.jpg

Hier mal das Script:
#!/usr/bin/perl -w

use strict;
use Image::Magick;
use Image::Size;
use CGI::Carp qw(fatalsToBrowser);
my @grafiken = ();

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

print "Content-type:text/html\n\n";

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)$/;
my ($width, $height) = ($x * .5, $y * .5);
$img = $image->Resize("$width x $height");
$img = $image->Write($filename.'neu.'.$extension);
}
print "DONE\n";

Was ich schon probiert habe, aber mit den selben Ergebnissen:
Statt Resize, Scale() probiert.
Statt Resize, Sample() probiert.
$image->Set(quality=>100) ausprobiert, aber da produzierte es entweder ein Bild mit Größe 0 oder wenn ich $img->Set... schrieb, bekam ich eine Fehlermeldung:
Can't call method "Set" without a package or object reference at ..... line 27, da ich nicht mal weiß, wo ich dieses Set überhaupt im Script anwenden soll, bei $image, oder $img und wo? Auf jeden Fall schien Set-> auch sowieso nixcht zu klappen.
Desweiteren weiß ich, dass es auch ohne diese Sachen, die ich bis jetzt probiert habe, funktioniert hat, weil als ich mir kurz Linux installierte, musste ich meine Scripts zu GD ändern, da man auf Linux anscheinend ein Profi sein musste um Image::Magick zu installieren. Dummerweise habe ich diese Scripts nicht mehr, wo ich nachschaun hätte können. Ich weiß auf jeden Fall, dass es so einfach, wie das obere Script war, aber wie man an den Bilder sehen kann, produziert es nur Mist, aber warum? Ich hoffe jemand hat hier noch irgendwelche Tips, weil ich weiß seit Tagen nicht mehr weiter.

$xNeTworKx.

--
Mit Computern lösen wir Probleme, die wir ohne sie gar nicht hätten.
  1. Hallo Mensch mit kryptischen Namen,

    probier doch mal ImageMagick ohne API direkt über Kommandozeile anzusprechen. Ich mache das seit je her so und hatte noch nie Probleme.

    Syntax:

    ########################################################################################################################

    @param: width, height, path, filename

    @return: name of the thumbnail

    @description: creates a thumbnail as a copy of a given image in the same directory and prefixes the name with t_

    sub generate_thumbnail
    {
     my $width = $_[0];
     my $height = $_[1];
     my $path = $_[2];
     my $filename = $_[3];
     my $thumbnail = "t_$filename";

    my $ret = system("cp $path/$filename $path/$thumbnail");

    if ($ret != 0)
     {
      die("generate_thumbnail: Could not duplicate image $!");
     }

    $ret = system("mogrify -geometry '" . $width . "x" . $height . ">' $path/$thumbnail");
     if ($ret != 0)
     {
      die("generate_thumbnail: Could not create thumbnail $!");
     }

    return $thumbnail;
    }

    Gruß,
    Cruz

    1. Hi,
      danke, aber ich weiß, dass das Script mal auch so funktioniert hat und es muss so funktionieren, da ich es später, wie ich schon sagte, benötige. Selbst wenn es aus der Kommandozeile funktionieren würde, hilft mir das leider bei meinem Script nicht viel weiter, da ich nicht weiß, was daran falsch ist.

      $xNeTworKx.

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