怎样使用Alpha通道使png图片透明
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎样使用Alpha通道使png图片透明相关的知识,希望对你有一定的参考价值。
常用的方式有:
1、CSS里添加filter(手工添加很麻烦)
2、用gif来代替(有瑕疵)
3、使用vml(JS来实现,并且动态操作DOM时可能也要调用)
如果使用程序来自动添加_filter和_background的话,就要做到如何去识别当前引用的图片是否含有alpha的透明。
知道了png图片的数据格式以后,可以通过depth和colorType来判断图片是否含有alpha通道的透明。
具体代码如下:
***
* 判断一个图片是否是包含alpha通道的png
* @param string $file
*/function is_alpha_png($file)
if (! file_exists ( $file ))
return false;
$f = @fopen ( $file, 'r' );
if (! $f)
return false;
$bin = fread ( $f, 29 );
fclose ( $f );
$info = @unpack ( "C8c/C8char/C4width/C4height/Cdepth/Ccolortype", $bin );
$png = array (
137,
80,
78,
71,
13,
10,
26,
10
);
//判断头是否是png文件
for($i = 0; $i < 8; $i ++)
if ($png [$i] != $info ['c' . ($i + 1)])
return false;
list ( $width, $height ) = getimagesize ( $file );
//这里用width3和4就可以了
$w = $info ['width3'] * 256 + $info ['width4'];
$h = $info ['height3'] * 256 + $info ['height4'];
//判断当前获取跟系统获取的值是否相同
if ($width != $w || $height != $h)
return false;
$depth = $info ['depth'];
$colorType = $info ['colortype'];
if ($depth == 8 || $depth == 16)
if ($colorType == 6)
return true;
return false;
参考技术A alpha通道是一个 0-255 之间的数值,0表示完全透明,255标识不透明,如果你想要对图片中某部分透明化,那么只要对该区域的像素设置alpha通道为0就可以,当然如果alpha数值是0-255之间的数值也可以,那么就是半透明效果了追问
怎么样对那该区域的像素设置alpha通道为0,请指教。最好是把具体步骤写出来,拜谢了
追答我只会从编程角度改变,但很少研究其他工具软件,但我估计是有这样的工具,可以帮助你的,你可以百度一下png图片处理软件看看
参考技术B 你是不是有alpha通道然后存储为png后变为白色,不是透明?如果是这个问题的话可以存储为网络用的格式,里面选择png,这样就是透明的了 参考技术C 不知你是要在什么领域应用。如果是开发自动生成图片的脚本的话,就如楼上所说,设定相应对象的ALPHA值就可以了;如果是手动处理图片,则在PHOTOSHOP中,先不用管如何保存图片,直接按照自己的意图设定图层的透明度,当处理完图片后,不要直接保存,而是使用“文件 - 保存成WEB格式”来保存,然后文件格式选择“PNG-24”就可以了,PNG-8是不支持透明通道的。另外,带透明通道的PNG图片需要比较新版本的软件才能有透明效果,一些老的看图软件和具备图片显示功能的软件不一定支持,比如IE6,对于PNG中透明部分也会显示一个底色。 参考技术D 搜索软件,vtfeditor。
导入tga再导出png。就透明了
以上是关于怎样使用Alpha通道使png图片透明的主要内容,如果未能解决你的问题,请参考以下文章
photoshop怎样改变alpha值存为透明图片 直接存为“web和设备所格式”的png格式不行,浏览时候出现白色背景
如何使背景PNG图像Alpha通道在QMainWindow中显示为透明
ImageMagick - 设置透明带 AlphaChannel 的 png 图片的透明度