Android支持的图片资源格式及其特性
Android系统支持常见的图片资源格式,如jpg、png、gif等。这几种主要图片格式的特点如下:
1.Gif格式图片的特点
透明性:Gif是一种布尔透明类型,既它可以是全透明,也可以是全不透明,但是它并没有半透明(alpha 透明)。
动画:Gif这种格式支持动画。
无损耗性:Gif是一种无损耗的图像格式,这也意味着你可以对gif图片做任何操作也不会使 得图像质量产生损耗。
水平扫描:Gif是使用了一种叫作LZW的算法进行压缩的,当压缩gif的过程中,像素是由上到下水平压缩的,这也意味着同等条件下,横向的gif图片比竖向 的gif图片更加小。例如500*10的图片比10*500的图片更加小。
间隔渐进显示:Gif支持可选择性的间隔渐进显示
由以上特点看出只有256种颜色的gif图片不适合照片,但它适合对颜色要求不高的图形(比如说图标,图表等),它并不是最优的选择,我们会在后面中看到png是最优的选择。
2.Jpeg格式图片特点
透明性、动画:它并不支持透明,也不支持动画。
损耗性:除了一些比如说旋转(仅仅是90、180、270度旋转),裁切,从标准类型到先进类型,编辑图片的原数据之外,所有其它操作对jpeg图像的处理 都会使得它的质量损失。所以我们在编辑过程一般用png作为过渡格式。
隔行渐进显示:它支持隔行渐进显示(但是ie浏览器并不支持这个属性,但是ie会在整个图像信息完全到达的时候显示)。
由上可以看出Jpeg是最适web上面的摄影图片和数字照相机中(android壁纸默认就是jpg的)。
3.Png格式图片分析
Png这种图片格式包括了许多子类,但是在实践中大致可以分为256色的png(PNG8)和全色的png(PNG24、 PNG32),你完成可以用256色的png代替gif,用全色的png代替jpeg
透明性:Png是完全支持alpha透明的(透明,半透明,不透明)。
动画:它不支持动画
无损耗性:png是一种无损耗的图像格式,这也意味着你可以对png图片做任何操作也不会使 得图像质量产生损耗。这也使得png可以作为jpeg编辑的过渡格式水平扫描像GIF一样,png也是水平扫描的,这样意味着水平重复颜色比垂直重复颜色的图片更小。
间隔渐进显示:它支持间隔渐进显示,但是会造成图片大小变得更大
其它图片格式与PNG比较:众所周知GIF适合图形,JPEG适合照片,PNG系列两种都适合。
A.相比GIF:PNG 8除了不支持动画外,PNG8有GIF所有的特点,但是比GIF更加具有优势的是它支持alpha透明和更优的压缩。所以,大多数情况下,你都应该用 PNG8不是GIF(除了非常小的图片GIF会有更好的压缩外)。
B.相比JPEG:JPEG比全色PNG具有更加好的压缩,因此也使得JPEG适合照片,但是编辑JPEG过程中容易造成质量的损失,所以全色PNG 适合作为编辑JPEG的过渡格式。
Photoshop制图几个概念:
1.位深&通道
在photoshop里,点击图像,模式然后可以选择制图的通道位深。8位、16位、32位有啥区别?和我们常说的24、32位图像是一个概念么?
A.先说第一个,这里位表示的是红绿蓝三基色分别有2的N(8、16、32)次方个强度。位数越宽,那么它能表示的颜色也就越多,越真实。当然图片的容量就会越大,对图片处理起来需要的时间就越长。还有一个就是所有photoshop内置滤镜都支持8位通道,16、32位通道有的滤镜是不支持的,尤其是第三方外挂的。
B.第二问的答案当然是否定的。我们可以用三基色来组成任意一种特定的颜色。Photoshop里面的位深指的是基色,我们常说的32位图像指的是特定的一种颜色。我们常见的8位通道RGB图像,3个通道共24位,即一张24位RGB图像里可表现大约1670万种颜色。ARGB就是在原来真彩色的基础上加一个alpha通道,使图像具备可透明性,这样就组成了我们常说的32位图。至于16、32位深一般只在专业领域可能会用到,原理一样,需要了解的,自己算下就ok;
2.加噪点
这是一种很凑合的做法,原理就是24位带渐变的真彩图以16位的增强色显示就会出现一圈圈光晕一样的轮廓失真。加入微小噪点,降低图片的清晰度,反而会让光晕失真均衡,从而感官上有一定改善。操作就是点滤镜,杂色,添加杂色,数值最好不超过1.5.
3.储存为web和设备使用格式
Photoshop里面专门对web和移动设备进行了相关的适配兼容,原因是像nokia大多的功能机都只支持增强色,所以在这个模式下可以输出相适应的图片资源。Android作为最优秀的移动系统之一,当然完全支持最高的规格,但不排除做一款定位低端,为了节约成本,把设备做成增强色。
Android系统对位宽的支持:
正如上面所说,Android系统对主流图片支援格式都提供良好的支持。源码中分别做了以下定义:
Ø ALPHA_8:数值为8,图形参数由一个字节来表示, 是8位的位图
Ø ARGB_4444:4+4+4+4=16,图形的参数由两个字节来表示,是16位的位图.
Ø ARGB_8888:8+8+8+8=32,图形的参数由四个字节来表示, 是32位的位图.
Ø RGB_565:5+6+5=16,图形的参数由两个字节来表示, 是16位的位图.
ALPHA_8,ARGB_4444,ARGB_8888都是透明的位图,也就是字母A代表Alpha.
ARGB_4444:意味着有四个参数,即A,R,G,B,每一个参数由4bit表示.
ARGB_8888:意味着有四个参数,即A,R,G,B,每一个参数由8bit来表示.
RGB_565:意味着有三个参数,R,G,B,三个参数分别占5bit,6bit,5bit.
Android系统2.2以前的图片默认格式是RGB_565模式,这时候显示真彩图片资源就会产生失真现象,尤其是带了渐变效果;2.3内核升级后,对图片解析默认的模式变成ARGB_8888,真彩图片资源的支持有很大提升。
结论:
u 高通2.3和Marvel4.0以上版本默认PixelFormat就是ARGB_8888(32位)的,不会出现失真问题。
4.0 2.3
u Marvel2.3版本可以有以下几种方案解决(图示失真原因是Marvel2.3的很多代码是从2.2迭代过来的,2.2做的工作得到了延续,但是也引进了很多历史遗留问题,图形引擎GC没做好):
1.凑合改法(风险小,效果一般)
A.给渐变图片加微小的噪点。
在Marvel2.3中,两张图片作对比,左边加了1.5的噪点反而看起来更平滑,这个噪点值可能取得更优化的值。
B.UI作图用到渐变效果要尽量真机验证效果。
C.加以下代码:getWindow().setFormat(PixelFormat.RGBA_8888);(ps:直接加在onCreate 中的setContent之前。效果无法保证,个人验证Marvel环境下无法生效)。
2. 彻底改法(风险需评估,效果是彻底的)
在框架甚至图形库源码(GC)找到和调用设置图片解析模式的代码作评估并修改。
u 该问题的产生无关乎硬件。
u Android资源推荐使用png格式。
分享到:
相关推荐
实现简单的Android全屏显示图片效果,可以拿来借鉴下
Android实现图片左右滑动效果 代码很简单,就一个Activity,很好学习的 可以联系我一起学习,交流哈
android图片堆叠效果实现,实现任意小角度堆叠显示,可用于图片相册缩略图
Android 图片阴影效果和影子效果 ,先初始化画笔,为后面阴影效果使用,图像平移为了刚好在原图后形成影子效果。在原有矩形基础上,画成圆角矩形,同时带有阴影层。如果不调用mutate方法,则原图也会被改变,因为...
Android图片效果: "图片缩放", "图片圆角", "图片倒影", "旋转图片", "图片反转", "图片色调饱和度、色相、亮度处理", "涂鸦,水印", "图片上写文字", "怀旧效果", "模糊效果" ,"柔化效果(高斯模糊)", "浮雕效果...
android画廊效果,中间图片变大android画廊效果,中间图片变大
Android图片下载显示(相册效果),自己开发用到,没研究完,只是个半成品,记录一下
Android 图片局部放大效果
android图片模糊效果,里面实际通过算法,处理图片像素,可以应用到自己的项目中
Android通过网络URL获取图片并显示
因为工作需要,要做图片切换效果,在网上找了好久,找到的资源要么答非所问,要么没有通用性,我就想:难道这东西这么难做吗?于是自己动手,丰衣足食。 其实各种切换特效都能用Android的属性动画来做的,我就如此...
Android 呼吸灯效果,就是Animation的淡入淡出循环播放
点击图片磁贴效果 很炫.可以玩啊
如何从网络中获取一张图片,并显示出来?? 首先应想到若要从网络资源中获取图片,就需要通过流操作,于是就想到如何创建流。 第一步:指定图片资源的URL 第二步:通过RUL获取一个connection 第三步:通过连接获取...
Android 图片点击震动效果源码.zip源码资源下载Android 图片点击震动效果源码.zip源码资源下载
Android显示GIF图片 Android显示GIF图片 Android显示GIF图片
Android 图片阴影效果和影子效果.zip源码资源下载Android 图片阴影效果和影子效果.zip源码资源下载
Android 图片阴影效果和影子效果源码.zip源码资源下载Android 图片阴影效果和影子效果源码.zip源码资源下载
Android 点击图片变暗效果 重写ImageView,点击图片改变前景色。
android 中Gallery控件相当于一个图片浏览器,将图片资源加载进去便可以显示其效果