PHP / GD ImageSaveAlpha und ImageAlphaBlending

Ich verwende GD zum Ändern der Größe und zum Konvertieren von Bildern. Bei meinen Tests habe ich jedoch ein seltsames Verhalten beim Konvertieren transparenter PNGs in JPEGs festgestellt. Nach dem HandbuchImageAlphaBlending() ist standardmäßig aktiviert, aber um die Transparenz zu erhalten, muss ich festlegenImageSaveAlpha() auf true (was wiederum erfordert, dass ich ImageAlphaBlending () auf false setze). Der richtige Weg sollte also sein:

<code>$result = ImageCreateFromPNG(...);
ImageAlphaBlending($result, false);
ImageSaveAlpha($result, true);
ImageFill($result, 0, 0, IMG_COLOR_TRANSPARENT);
ImageJPEG($result);
ImageDestroy($result);
</code>

Wenn ich es jedoch "richtig" mache, wird der gesamte Transparenzbereich im JPEG schwarz. Dies scheint bei meinen Tests zu funktionieren (JPEG mit weißem Hintergrund auf transparenten Bereichen):

<code>$result = ImageCreateFromPNG(...);
ImageAlphaBlending($result, true); // true by default, but still...
ImageSaveAlpha($result, true);
ImageFill($result, 0, 0, IMG_COLOR_TRANSPARENT);
ImageJPEG($result);
ImageDestroy($result);
</code>

Kann mich bitte jemand zu diesem Thema aufklären?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage