PHP / GD ImageSaveAlpha e ImageAlphaBlending

Eu estou usando o GD para redimensionar e converter imagens, no entanto, durante meus testes eu encontrei um comportamento estranho ao converter PNGs transparentes para JPEG. De acordo com o manualImageAlphaBlending() está ativado por padrão, mas para preservar a transparência, devo definirImageSaveAlpha() para true (que por sua vez requer que eu defina ImageAlphaBlending () como false). Então, o caminho correto deve ser:

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

No entanto, se eu fizer isso da maneira "correta", toda a área de transparência aparecerá preta no JPEG. Isto parece funcionar (JPEG com fundo branco em áreas transparentes) nos meus testes:

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

Alguém por favor pode me esclarecer sobre este assunto?

questionAnswers(2)

yourAnswerToTheQuestion