我使用GD調整大小和轉換圖像,但是在我的測試過程中,當將透明PNG轉換爲JPEG時發現了一個奇怪的行爲。根據手冊ImageAlphaBlending()默認打開,但爲了保持透明度,我必須設置ImageSaveAlpha()爲true(這又要求我將ImageAlphaBlending()設置爲false)。所以,正確的做法應該是:PHP/GD ImageSaveAlpha和ImageAlphaBlending
$result = ImageCreateFromPNG(...);
ImageAlphaBlending($result, false);
ImageSaveAlpha($result, true);
ImageFill($result, 0, 0, IMG_COLOR_TRANSPARENT);
ImageJPEG($result);
ImageDestroy($result);
但是,如果我這樣做「正確」的方式,所有透光面積出現黑在JPEG。這似乎工作(透明區域上的白色背景的JPEG):
$result = ImageCreateFromPNG(...);
ImageAlphaBlending($result, true); // true by default, but still...
ImageSaveAlpha($result, true);
ImageFill($result, 0, 0, IMG_COLOR_TRANSPARENT);
ImageJPEG($result);
ImageDestroy($result);
有人請賜教我關於這個問題?
對不起! JPEG格式的Afaik圖像無法擁有「透明」背景或Alpha通道。 – merkuro 2009-06-22 01:49:04
是的,我知道。我只想將原始PNG圖像的所有透明區域在JPEG輸出上轉換爲白色。對不起,如果我沒有解釋得很好。 – 2009-06-22 02:05:19