ImageJPEG() Quality Problem

nihilfire

Grünschnabel
Hallo!

Ich habe ein merkwürdiges Problem, wenn ich ein Bild zuschneide:

PHP:
$src_img = imagecreatefromjpeg($src);
$dst_img = imagecreatetruecolor($dst_w, $dst_h);
$dst_y = ($src_h - $dst_h) / 2;

imagecopy($dst_img, $src_img, 0, 0, 0, $dst_y, $src_w, $src_h);

imagejpeg($dst_img, $path, 100);

Wenn das $src-Bild wenige KB groß ist wird das neue Bild nicht vollständig erzeugt:

Blaue.jpg Anhang anzeigen 49931

Ist das Bild größer oder die Qualität kleiner als 90, gibt es keine Probleme.
Weiß jemand woran das liegen könnte :confused:


Danke und Gruß
nihilfire
 
Dein Aufruf von imagecopy ist in sofern falsch dass der $dst_y Parameter an der 5. Stelle ist. Laut PHP -Doc ist der Ziel-Y Parameter an der 5. Stelle:
http://php.net/manual/en/function.imagecopy.php hat gesagt.:
bool imagecopy ( resource $dst_im , resource $src_im , int $dst_x , int $dst_y , int $src_x , int $src_y , int $src_w , int $src_h )

Ich denke die Funktion imagecopyresampled dürfte das bewirken was du möchtest. (Aus einem Quellbild einen Ausschnitt in ein Zielbild kopieren. Zusätzlich bewirkt das Resampeln dass gerade beim Skalieren weniger "Artefakte" auftreten.)
http://www.php.net/manual/en/function.imagecopyresampled.php hat gesagt.:
bool imagecopyresampled ( resource $dst_image , resource $src_image , int $dst_x , int $dst_y , int $src_x , int $src_y , int $dst_w , int $dst_h , int $src_w , int $src_h )
 
Habe jetzt:

PHP:
imagecopyresampled($dst_img, $src_img, 0, 0, 0, $src_y, $dst_w, $dst_h, $dst_w, $dst_h);

(bei den letzten beiden Parametern habe nicht src_w bzw. scr_h benutzt, weil das bild dann verzerrt wird), bekomme aber dasselbe Resultat:

Wasserlilien.jpg Anhang anzeigen 49947

, wenn ich bei Qualität 100 nehme.


Gruß
nihilfire
 
Zurück