当前位置:首页 > 编程学习 > PNG图片格式详解

PNG图片格式详解

编程学习2012-12-2675470

 PNG图片格式特点:

  Png这种图片格式包括了许多子类,但是在实践中大致可以分为256色的png和全色的png,你完成可以用256色的png代替gif,用全色的png代替jpeg,Png是完全支持alpha透明的(透明,半透明,不透明),尽管有两个怪异的现象(在ie6下)。

  png是一种无损耗的图像格式,这也意味着你可以对png图片做任何操作也不会使得图像质量产生损耗。这也使得png可以作为jpeg编辑的过渡格式。

 PNG在ie中的怪异表现:

  1、IE6以下的浏览器支持PNG8的索引透明,但图片必须为全透明,半透明的png8在浏览器下显示为全透明。

  2、Alpha透明的全色PNG(png32)在ie6中会出现背景颜色(通常是灰色)。

 由上面可以总结:

  (a)全透明的png8可以在任一浏览器正常显示(就像gif一样)。半透明的png8在除了ie6及其以下的浏览器下错误的显示成全透明,其它浏览器都能正常显示半透明。这个bug并不需要特殊对待,因为在不支持半透明的浏览器下只是显示为全透明,对用户体验影响不大,它反而是透明gif的加强版。

  (b)第二个bug没有什么好的方法解决,只能通过(AlphaImageLoader滤镜和htc)方法来处理。

 更多关于PNG:

  PNG8

  256色PNG的别名,无损格式,体积最小,但最多只支持256色

  PNG24

  全色PNG的别名,除了png8的特点,理论上可以存储2的24次方种颜色,但ie6之前的版本对此格式兼容有问题

  PNG32

  全色PNG的别名,除了以上的特点外,体积稍大

  相比GIF

  PNG 8除了不支持动画外,PNG8有GIF所有的特点,但是比GIF更加具有优势的是它支持alpha透明和更优的压缩。所以,大多数情况下,你都应该用PNG8不是GIF(除了非常小的图片GIF会有更好的压缩外)。

  相比JPEG

  JPEG比全色PNG具有更加好的压缩,因此也使得JPEG适合照片,但是编辑JPEG过程中容易造成质量的损失,所以全色PNG适合作为编辑JPEG的过渡格式.

 到底是png24 Alpha透明还是png32 Alpha透明?

  这个可能跟每个人使用切图软件有关。

  1、Photoshop

  1)只能导出布尔透明(全透明或者全不透明)的PNG8。

  2)能导出alpha透明(全透明,全不透明,半透明)的PNG24。

  3)不能导出PNG32。

  2、Fireworks

  1)既能导出布尔透明的PNG8,也能导出alpha透明的PNG8,半透明的png8在除了ie6及其以下的浏览器下错误的显示成全透明。

  2)能导出PNG24,但是和jpeg差不多,不能透明。

  3)能导出alpha透明的PNG32。

  应该说PNG24和PNG32是一样,(The difference between PNG24 and PNG32)一文中指出PNG32中每个像素不仅存储了24位真彩信息还存储了8位alpha通道。所以fw导出PNG32不用选择透明,而ps导出 PNG24时是要勾选透明度的,这时候的PNG24应该就转化成了PNG32了吧。

 PNG8与PNG24的区别:

  PNG-8和PNG-24,其最大的区别不是颜色位的区别,而是存储方式不同;

  PNG-8 色盘索引、调色板中一位透明值、不支持阿尔法通道的半透明,存储格式中每个像素无透明度的数据块定义;PNG-8是用8位索引值来在调色盘中索引一个颜色,因为一个索引值的最大上限为2的8次方既128,故调色盘中颜色数最多为128种,所以该文件格式又被叫做PNG-8128仿色。

  PNG-24 无调色板、支持阿尔法通道的半透明、每个点阵都有透明度的定义,最低32位真彩色;是PNG-24是用24位来保存一个像素值,是真彩色。

  PNG-8 和 gif 有一些相似之处,模式都是索引颜色,只支持像素级的纯透明,不支持 alpha 透明。我们通常说的“IE6 不支持 PNG 透明”,是指不支持 PNG-24 的透明(将透明区域显示为灰色)。


扫描二维码推送至手机访问。

版权声明:本文由海阔天空发布,如需转载请注明出处。

本文链接:https://apull.net/html/201212261827.html

分享给朋友:

相关文章

年纪偏大是否适合学习计算机

年纪偏大是否适合学习计算机

★年纪偏大是否适合学习计算机  Q:我本科不是学计算机专业。但是我对计算机的兴趣很大,想明年考北京大学计算机软件的研究生!请问像我这样快30岁的人了,才开始学习计算机是不是太晚了?  A:中国很多人相信程序员是吃青春饭的。 这主要是由中国软件水平发展的现状决定的。 1、大部分都做的是行业管理方面的软件,从计算机技术上说很快就可以进入。 2、很多公司没有管理和技术双重的提升机制,使得人们觉得做管理比做技术有前途,但是仍...

为什么每个程序员都应该学习C语言

为什么每个程序员都应该学习C语言

为什么每个程序员都应该学习C语言 每个程序员在他们的编程生涯中都应该学习C语言,因为它有太多难以忽视的好处了。除了它会给你提供更多的工作机会之外,C语言还会教给你更多的关于计算机的知识。它能给我们提供的裨益,简单列举如下:   1)相比较其他的编程语言(像C++,JAVA),C语言是个低级语言。从总体上来说,低级的编程语言可以让你更好的了解计算机。   2)设备驱动程序和操作系统只能用C语言来编写。现在,你...

[转] 深入探讨C++中的引用

[转] 深入探讨C++中的引用

  摘要:介绍C++引用的基本概念,通过详细的应用分析与说明,对引用进行全面、透彻地阐述。  关键词:引用,const,多态,指针  引用是C++引入的新语言特性,是C++常用的一个重要内容之一,正确、灵活地使用引用,可以使程序简洁、高效。我在工作中发现,许多人使用它仅仅是想当然,在某些微妙的场合,很容易出错,究其原由,大多因为没有搞清本源。故在本篇中我将对引用进行详细讨论,希望对大家更好地理解和使用引用起到抛砖引玉的作用。  引用简介  引用就是某一变量(目标)的一个别名,...

密码的故事

密码的故事

密码的故事Billy Hollis 本文是由一个问题引出的。我需要一种将密码保存在加密文件中的方法,因为我需要记住许多密码,但记忆力却已大不如前。我知道有许多商用工具能够做到这一点,但我感到学习  .NET 中的一项新技术真的很有好处。 我用 Visual Basic® .NET  完成了一个简单而完整的程序,用于加密和解密文件,从中学到了许多知识。既然加密对于多种开发都是一个重要问题,本文就介绍一下如何构造这样的程序。 有各种低级别的技术可以用于加密,...