PHP / GD ImageSaveAlpha i ImageAlphaBlending

Używam GD do zmiany rozmiaru i konwertowania obrazów, jednak podczas testów odkryłem dziwne zachowanie podczas konwersji przezroczystych PNG na JPEG. Zgodnie z instrukcjąImageAlphaBlending() jest domyślnie włączone, ale w celu zachowania przejrzystości, którą muszę ustawićImageSaveAlpha() na true (co z kolei wymaga ustawienia ImageAlphaBlending () na false). Więc właściwym sposobem powinno być:

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

Jeśli jednak zrobię to „poprawnie”, cały obszar przezroczystości pojawi się w JPEG w kolorze czarnym. Wydaje się, że to działa (JPEG z białym tłem na przezroczystych obszarach) podczas moich testów:

<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>

Czy ktoś może mi oświecić na ten temat?

questionAnswers(2)

yourAnswerToTheQuestion