怎样使用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图片透明的主要内容,如果未能解决你的问题,请参考以下文章

求助,unity的png图片没了透明部分,在线等

photoshop怎样改变alpha值存为透明图片 直接存为“web和设备所格式”的png格式不行,浏览时候出现白色背景

如何使背景PNG图像Alpha通道在QMainWindow中显示为透明

ImageMagick - 设置透明带 AlphaChannel 的 png 图片的透明度

带alpha透明通道视频—网页播放带alpha通道视频叠加合成方案

Vegas7.0如何将插入的图片背景透明和移动?