【转】png优化相关
Png是图像文件存储格式,在网页设计中已经不是一个陌生的名词,在前端开发中经常使用到它,如常用CSS 雪碧图。而Png的使用不仅仅如此,Png有多少种格式,有哪些特点,PC端中常用的Png格式是哪些,手机端最合适的Png格式是什么呢?如果你对这些问题有疑问,那么很开心的告诉你,这里有你需要的答案(*^__^*) 嘻嘻……
这篇文章本来是上上周要发的,后来家里有事情,回老家了,这周才回到深圳,推迟到今天才发~
不多说了,看文章~~
目录:
- Png的格式和透明度
- [Png 不透明]格式
- Png24实际为不透明图片
- [Png 索引透明]格式
- 如何使用Photoshop导出『png8 索引透明』
- [png8 索引透明]产生杂边锯齿原因
- 如何避免[png8 索引透明]的杂边锯齿
- [Png Alpha透明]格式手机端选择哪种Png
- 如何使用Fireworks导出[png8 alpha透明]
- PC端选择哪种Png
- Png的格式、颜色种类、位数、透明度、浏览器支持一览
PNG的格式和透明度
这个Fireworks会比较清楚,打开Fireworkd优化面板,可以清楚看到png有3种不同深度的格式:png8、png24、png32

其中,在优化面板选择png8,可发现png8包括不透明、索引色透明、Alpha透明3种格式

PNG8
8位的PNG最多支持256(2的8次方)种颜色,8位的PNG支持不透明、索引透明、alpha透明
PNG24
支持2的24次方种颜色,表现为不透明
PNG32
支持2的32次方种颜色,32位是我们最常使用的格式,它是在PNG在24位的PNG基础上增加了8位的透明信息,支持不同程度的半透效果
其实PNG8的3种格式不透明、索引透明、alpha透明,正好把png的所有格式都归类好了:
- [PNG 不透明]格式
- [PNG 索引透明]格式
- [PNG Alpha透明]格式
有不明白的地方,请往下看~
[PNG 不透明]格式
说到不透明,就像jpg格式一样,『png 不透明』只能为不透明,代表格式有:『png8 不透明』和『png24』,导出软件有:Photoshop、Fireworks。不推荐使用『png 不透明』格式,建议用jpg图片来代替它。
可能会有同学会问为什么png24是不透明的,我使用photoshop导出来的就是png24啊?
Png24实际为不透明图片
打开photoshop,任意打开一个带透明的psd文件,存储为web所有格式(ctrl+shift+alt+s),如下面板所示:
不勾选透明度单选框,透明背景会被默认的白色填充

导出来的png图片深度为24位,图片为不透明,表现跟jpg图片相似

如果勾选了alpha通道,导出来的深度是32位透明图片

从photoshop存储为web所有格式面板中这样理解,png24深度其实为24位,再勾选上8位的alhpa通道,24+8=32,即[png32] = [png24+alpha],这也许是photoshop软件开发者不添加png32位格式的原因,下图为Photoshop存储为web所有格式界面的图片格式选择,并没有png32位的选项~

[PNG 索引透明]格式
说到索引颜色透明,我们可以了解下什么是索引颜色,『png 索引透明』代表格式有『png8 索引透明』,导出软件有:Photoshop、Fireworks,它总结如下:
- 挑选一副图片中最有代表性的若干种颜色(通常不超过256种)
- 只能为不透明或全透明
- [Png8 索引透明]文件体积小
- [Png8 索引透明]产生杂边锯齿
- [Png8 索引透明]支持IE6
如何使用Photoshop导出[png8 索引透明]
使用Photoshop,存储为web所有格式,按照如下图片的红色边框配置,可导出png8索引透明
注:使用Photoshop导出[png8 索引透明]的效果比Fireworks导出的效果良好,这里不介绍使用Fireworks导出[png8 索引透明]
[png8 索引透明]产生杂边锯齿原因
[png8 索引透明]只有透明索引颜色,没有半透明索引颜色,下面左侧为带半透明像素的图片,在浏览器中打开不会有锯齿,而右侧图片为全透明或不透明的像素,在浏览器打开后有锯齿

由于[png8 索引透明]没有半透明索引颜色,使用Photoshop导出时,原有的半透明转化为不透明,从而产生锯齿。

如何避免[png8 索引透明]的杂边锯齿
方法:设置杂边与背景色颜色一致可达到视觉上透明
相信不难理解,利用杂边与背景色一致,可以来满足视觉上的透明,缺点是只能适应一种背景色,在其它背景色下同样会产生杂边


怎么设置呢,打开Photoshop,在存储为web格式面板中进行如下操作:

[PNG Alpha透明]格式
说到 Alpha透明,我们可以了解下什么是alpha通道,『png alpha透明』代表格式有『png8 alpha透明』和『png32』,导出软件有Fireworks,总结如下:
- 一个8位的灰度通道,该通道用256级灰度来记录图像中的透明度信息,定义透明、不透明和半透明区域
- 支持全透明和半透明
- [Png8 alpha透明]文件体积小
- [Png8 alpha透明]在IE6下有毛边
如何使用Fireworks导出[png8 alpha透明]
Firewoks中,在优化面板,按照如下图片的红色边框配置,可导出png8 alpha透明
注:Firewoks支持导出[png8 alpha透明],Photoshop不支持导出[png8 索引透明]


手机端选择哪种Png
说到手机,考虑流量的问题是必不可少的,所选png需要满足体积小和视觉效果良好,那么哪种png格式符合这2个要求呢?做个实验吧~
不同Png格式测试
测试平台:ios&android webkit浏览器
测试图片:彩种雪碧图1230*82

测试内容:同一张雪碧图导出不同png格式的大小、透明度、杂边以及在retina显示屏和普通显示屏下的对比
测试结果:

从上图可见png32和png24体积太大了,十分消耗手机用户流量,不是我们选择的范围,那么可以锁定目标在[png8 alpha透明]和[png8 索引透明]中,2者对比,可以看出[png8 alpha]在手机端的支持是良好,可能有童鞋会认为,单凭一张图片也不能下结论~
而经过笔者使用多张雪碧图测试后使用Fireworks导出的[png8 alpha],在手机端的支持是比较好的~不仅文件小,节省流量,而且半透明效果良好
于是,移动端采用[Png8 alpha透明],相信[Png8 alpha透明 ]是未来的一种趋势~
PC端选择哪种Png
PC端使用哪种png,其实这个话题很早就有结论了,这里简单介绍下
使用png8的方案:
使用photoshop打开雪碧图,分别导出一张png32和一张[png8 索引透明]的图片,高级浏览器使用png32位图片,针对IE6使用[png8 索引透明],并设置[png8 索引透明]杂边与背景色颜色一致可达到视觉上透明
注:为啥使用png32而不使用[png8 alpha透明]?因为pc端的网速大多良好,建议使用表现更佳的png图片,显然png32是最合适的,当然你也可以使用[png8 alpha透明],但是在高清显示器下的质量不如png32

.bg{
background:url(global.png?v=20130530) no-repeat;
_background:url(global_png8.png?v=20130530) no-repeat;
}
使用IE滤镜的方案:
比较耗性能,而且存在不支持背景平铺,导致链接失效等缺点,不推荐该方案,不要为了IE而把自己搞得像IE~
.bg{filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=”img. png”, sizingMethod=”scale”);}
另外还有js和打补丁的办法,这里不做介绍,大家有兴趣可以百度下:IE6支持png24
Png的格式、颜色种类、位数、透明度、浏览器支持一览

【转】png优化相关的更多相关文章
- js DOM优化相关探索
我在这尝试两个方面:-->DOM与js -->DOM与浏览器 (最近在秒味视频上学到不少,哈哈哈) 一.DOM与js 1.js与dom的交互问题 频繁的与dom交互,是一件浪费时间与金钱的 ...
- MySql性能优化相关
原来使用MySql处理的数据量比较少,小打小闹的,没有关注过性能的问题.最近要处理的数据量飙升,每天至少20W行的新增数据,导致MySql在性能方面已经是差到不可用的地步了,必须要重视MySql的优化 ...
- Mysql优化相关总结
Mysql优化相关总结 2016-05-31 数据库集中营 优化顺序: 选择适当的引擎和表结构和数据类型 建立索引,优化sql. 增加缓存,redis.memcache. 主从.主主,读写分离. my ...
- Web 前端性能优化相关内容解析
Web 前端性能优化相关内容,来源于<Google官方网页载入速度检测工具PageSpeed Insights 使用教程>一文中PageSpeed Insights 的相关说明.大家可以对 ...
- Web 前端性能优化相关内容解析[转]
Web 前端性能优化相关内容,来源于<Google官方网页载入速度检测工具PageSpeed Insights 使用教程>一文中PageSpeed Insights 的相关说明.大家可以对 ...
- SQL Server 查询性能优化 相关文章
来自: SQL Server 查询性能优化——堆表.碎片与索引(一) SQL Server 查询性能优化——堆表.碎片与索引(二) SQL Server 查询性能优化——覆盖索引(一) SQL Ser ...
- android内存优化相关1
第一种策略,是释放显示相关的内存.这是我们针对系统APP采用的一种调优策略. 图形内容,俗称位图是非常占用内存的,针对位图,我们采用异步加载的方法,将位图内容信息和位图的状态信息分别进行存储,将内容信 ...
- nginx.conf配置及优化相关
nginx.conf配置文件内容 user www www; worker_processes ; worker_rlimit_nofile ; error_log /data/nginx/logs/ ...
- SQL Server优化相关的工具脚本
SQL Server性能优化的一些常用脚本,适用于SQL Server 2008,更高的版本某些系统表的字段有所不同,建议参考MSDN. 死锁相关 /************************* ...
- webpack优化相关操作
1.缩小文件搜索的范围 • 优化loader配置 尽量精确使用 include 只命中需要的文件. module.exports = { module: { rules: ...
随机推荐
- C#-WinForm-MDI窗体容器、权限设置
MDI窗体容器 - 放窗体的容器 窗体时顶级控件,是不允许放到其他的控件或窗体中的 (李献策lxc) 窗体属性中有一个属性:IsMdiContainer - 确定该窗体是否是MDI容器 在窗体中放一个 ...
- 快速上手php:使用PhpStrom部署项目
闲话 上学的时候一直以为可以专注自己的领域,以为与php无缘的,但是这种想法是错误,在完成任务的时候,你不得不使用你不熟悉的语言或者框架.正所谓业务驱动开发,这次接手已经离职的前辈的留下来的项目,最蛋 ...
- Extjs 知识体系1-dom操作
操作dom 主要是Ext.element,主要是简单的操作 Ext.dom.CompositeElement // 操作dom集合 ps:Extjs 使用字面量{} 形式,不支持链式操作 一.获取元素 ...
- 重写保存按钮save事件
_saveActionEventHandler:function(event,value){ if (!_self.fireEvent("saveBefore")) return; ...
- Windows命令点滴
1.删除windows服务项目: C:\服务器软件\Redis>sc delete Redis6379 [SC] DeleteService 成功 2.用于私网的IP地址段: 10.0.0.0/ ...
- 【Beta版本】七天冲刺集结令
031402304 陈燊 031402342 许玲玲 031402337 胡心颖 03140241 王婷婷 031402203 陈齐民 031402209 黄伟炜 031402233 郑扬涛 [Bet ...
- 3 HTML&JS等前端知识系列之javascript的基础
preface 作为一名运维开发,必须懂得前端知识,比如javascript,dom等等,下面就聊聊javascript. include 数据格式 条件判断,循环流程等. 函数 面向对象 what ...
- python3--函数(函数,全局变量和局部变量,递归函数)
1.1函数 1.1.1什么是函数 函数就是程序实现模块化的基本单元,一般实现某一功能的集合.函数名:就相当于是程序代码集合的名称参数:就是函数运算时需要参与运算的值被称作为参数函数体:程序的某个功能, ...
- sql中的inner join ,left join ,right join
左连接LEFT JOIN, 也就是说,左外连接的含义是限制连接关键字右端的表中的数据必须满足连接条件,而不关左端的表中的数据是否满足连接条件,均输出左端表中的内容.不满足连接条件的 ,连接字段栏位将对 ...
- js闭包的作用域以及闭包案列的介绍:
转载▼ 标签: it js闭包的作用域以及闭包案列的介绍: 首先我们根据前面的介绍来分析js闭包有什么作用,他会给我们编程带来什么好处? 闭包是为了更方便我们在处理js函数的时候会遇到以下的几 ...

