Ich erzeuge Bilder mit GD-Funktionen. Genauer: Ich nehm ein Foto, das schon existiert, und verkleinere es. Dabei wird aber die Bildqualität schlechter! Beim Vergrößern wär das ja klar, aber beim Verkleinern?
Als Qualität der JPGs kann ich auch 100 angeben, die Qualität nimmt trotzdem ab.
Was kann ich dagegen tun?
Hier mal der Code. Er bewirkt, dass die längere Seite des Bildes auf $size verkürzt wird, wenn sie nicht schon kleiner ist (dann bleibt sie so). Die andere Seite wird entsprechend geändert, damit das Verhältnis weiter stimmt.
Als Qualität der JPGs kann ich auch 100 angeben, die Qualität nimmt trotzdem ab.
Was kann ich dagegen tun?
Hier mal der Code. Er bewirkt, dass die längere Seite des Bildes auf $size verkürzt wird, wenn sie nicht schon kleiner ist (dann bleibt sie so). Die andere Seite wird entsprechend geändert, damit das Verhältnis weiter stimmt.
PHP-Code:
if (!$iname) echo "Es muss ein Bild angegeben werden!";
else {
$ipath = $gallery."/".$iname;
$src_img = imagecreatefromjpeg($ipath);
$new_w = imagesx($src_img);
$new_h = imagesy($src_img);
if ($new_w >= $new_h && $new_w >= $size) {
$aspect_ratio = $new_h / $new_w;
$new_w = $size;
$new_h = abs($new_w * $aspect_ratio);
$dst_img = imagecreate($new_w,$new_h);
}
elseif ($new_h > $new_w && $new_h >= $size) {
$aspect_ratio = $new_w / $new_h;
$new_h = $size;
$new_w = abs($new_h * $aspect_ratio);
}
$dst_img = imagecreate($new_w,$new_h);
imagecopyresized($dst_img,$src_img,0,0,0,0,$new_w,$new_h,imagesx($src_img),imagesy($src_img));
$farbe_b = imagecolorresolve($dst_img,255,255,255);
ImageString($dst_img,1,($new_w - 50),($new_h - 8),"a-mazed.de",$farbe_b);
Header("Content-type: image/jpeg");
ImageJPEG($dst_img,"",80); // Hier wird das Bild erzeugt
}
Kommentar