Ich benutze GD, um die Größe zu ändern und Bilder zu konvertieren, aber während meiner Tests fand ich ein seltsames Verhalten beim Konvertieren von transparenten PNGs zu JPEGs. Nach dem Handbuch ImageAlphaBlending() ist standardmäßig eingeschaltet, aber um die Transparenz zu erhalten, muss ich ImageSaveAlpha() auf True setzen (was wiederum erfordert, dass ich ImageAlphaBlending() auf false gesetzt). So sollte der richtige Weg sein:PHP/GD ImageSaveAlpha und ImageAlphaBlending
$result = ImageCreateFromPNG(...);
ImageAlphaBlending($result, false);
ImageSaveAlpha($result, true);
ImageFill($result, 0, 0, IMG_COLOR_TRANSPARENT);
ImageJPEG($result);
ImageDestroy($result);
Allerdings, wenn ich es tun die „richtige“ Art und Weise die ganze Transparenz Bereich im JPEG schwarz aufkommt. Dies scheint auf meinen Tests (mit weißen Hintergrund auf transparenten Bereichen JPEG) zu arbeiten:
$result = ImageCreateFromPNG(...);
ImageAlphaBlending($result, true); // true by default, but still...
ImageSaveAlpha($result, true);
ImageFill($result, 0, 0, IMG_COLOR_TRANSPARENT);
ImageJPEG($result);
ImageDestroy($result);
Kann jemand zu diesem Thema aufklären mich bitte?
Entschuldigung! Afaik-Bilder im JPEG-Format können keinen "transparenten" Hintergrund oder einen Alpha-Kanal haben. – merkuro
Ja, das weiß ich. Ich möchte nur, dass der gesamte transparente Bereich des ursprünglichen PNG-Bildes bei der JPEG-Ausgabe in Weiß konvertiert wird. Entschuldigung, wenn ich mich nicht gut genug erkläre. –