我正在使用GD输出一个图像,这是一个真彩色+ alpha通道PNG文件使用imagepng就好了。但是,我希望能够同时输出ie6兼容的256色PNG。根据imagetruecolortopalette的官方文档:
除了尽可能保留颜色之外,代码已经过修改,以在生成的调色板中保留尽可能多的alpha通道信息。
但是,我发现这个函数的结果根本没有保留任何透明度。我使用this firefox image将文本叠加在它上面作为测试,所有功能都给了我一个白色背景和一个奇怪的深蓝色边框。我知道我不能希望保留完整的alpha通道,但肯定这个功能至少可以在透明背景上进行。有什么我想念的吗?我可以选择其他方法吗?
我最近遇到过这样的事情 - 我只能通过以下方式获得透明度:
imagesavealpha($im, true);
imagecolortransparent($im, imagecolorat($im,0,0));
我知道在所有图像中,左上角的像素将是背景颜色。这些是在图像真彩色调色板之后和imagepng之前调用的。
看一下php文档中的imagesavealpha - 我认为这就是你要找的东西。
通过在qazxsw poi之前保存像素,我能够保持透明度
imagetruecolortopalette
然后换成
function check_transparent($im) {
$width = imagesx($im);
$height = imagesy($im);
$pixels = array();
for($i = 0; $i < $width; $i++) {
for($j = 0; $j < $height; $j++) {
$rgba = imagecolorat($im, $i, $j);
$index = imagecolorsforindex($im, $rgba);
if($index['alpha'] == 127) {
$pixels[] = array($i, $j);
}
}
}
return $pixels;
}
如
function replacePixels($im,$pixels){
$color = imagecolorallocatealpha($im, 0, 0, 0, 127);
foreach($pixels as $pixel)
imagesetpixel($im, $pixel[0], $pixel[1], $color);
}