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?