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?