J'utilise GD pour redimensionner et convertir des images, mais lors de mes tests, j'ai trouvé un comportement étrange lors de la conversion de PNG transparents en JPEG. Selon le manuel ImageAlphaBlending() est activé par défaut, mais afin de préserver la transparence, je dois définir ImageSaveAlpha() sur true (ce qui nécessite à mon tour de définir ImageAlphaBlending() sur false). Ainsi, la manière correcte devrait être:PHP/GD ImageSaveAlpha et ImageAlphaBlending
$result = ImageCreateFromPNG(...);
ImageAlphaBlending($result, false);
ImageSaveAlpha($result, true);
ImageFill($result, 0, 0, IMG_COLOR_TRANSPARENT);
ImageJPEG($result);
ImageDestroy($result);
Cependant, si je le fais de la « bonne » toute la zone de transparence vient en noir au format JPEG. Cela semble fonctionner (JPEG avec un fond blanc sur des zones transparentes) sur mes tests:
$result = ImageCreateFromPNG(...);
ImageAlphaBlending($result, true); // true by default, but still...
ImageSaveAlpha($result, true);
ImageFill($result, 0, 0, IMG_COLOR_TRANSPARENT);
ImageJPEG($result);
ImageDestroy($result);
Quelqu'un peut-il me éclairer sur s'il vous plaît ce sujet?
Désolé! Les images Afaik au format JPEG ne peuvent pas avoir d'arrière-plan "transparent" ou de canal alpha. – merkuro
Ouais, je le sais. Je veux juste que toute la zone transparente de l'image PNG d'origine soit convertie en blanc sur la sortie JPEG. Désolé si je ne me suis pas bien expliqué. –