怎样使用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;
}
展开全部
alpha通道是一个 0-255 之间的数值,0表示完全透明,255标识不透明,如果你想要对图片中某部分透明化,那么只要对该区域的像素设置alpha通道为0就可以,当然如果alpha数值是0-255之间的数值也可以,那么就是半透明效果了
追问
怎么样对那该区域的像素设置alpha通道为0,请指教。最好是把具体步骤写出来,拜谢了
追答
我只会从编程角度改变,但很少研究其他工具软件,但我估计是有这样的工具,可以帮助你的,你可以百度一下png图片处理软件看看
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你是不是有alpha通道然后存储为png后变为白色,不是透明?如果是这个问题的话可以存储为网络用的格式,里面选择png,这样就是透明的了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不知你是要在什么领域应用。如果是开发自动生成图片的脚本的话,就如楼上所说,设定相应对象的ALPHA值就可以了;如果是手动处理图片,则在PHOTOSHOP中,先不用管如何保存图片,直接按照自己的意图设定图层的透明度,当处理完图片后,不要直接保存,而是使用“文件 - 保存成WEB格式”来保存,然后文件格式选择“PNG-24”就可以了,PNG-8是不支持透明通道的。
另外,带透明通道的PNG图片需要比较新版本的软件才能有透明效果,一些老的看图软件和具备图片显示功能的软件不一定支持,比如IE6,对于PNG中透明部分也会显示一个底色。
另外,带透明通道的PNG图片需要比较新版本的软件才能有透明效果,一些老的看图软件和具备图片显示功能的软件不一定支持,比如IE6,对于PNG中透明部分也会显示一个底色。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
搜索软件,vtfeditor。
导入tga再导出png。就透明了
导入tga再导出png。就透明了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询