图片处理基础(一)

来源:互联网 发布:linux oracle监听启动 编辑:程序博客网 时间:2024/05/18 12:31

1、图片格式

图片分jpg和png,前者是有损压缩,后者是无损压缩,而且前者是24位,后者是可以是8位,24位,32位

2、像素和位

1024*720 表示水平1024像素点,竖直720像素点.8位、16位、24位、32位 表示一个像素点能表示多少个颜色。“位”( bit )是计算机存储器里的最小单元,1位就是黑白,2位是黑白之外再多两个颜色。

dpi是指硬件上 ,每英寸多少像素

打印机打印4*3英寸,而打印分辨率横向和竖向都是300dpi,则需要照相机采集的像素数至少为(300*4)*(300*3)=1080000像素,约一百万像素

3、

A:透明度

R:红色

G:绿

B:蓝

Bitmap.Config ARGB_4444:每个像素占四位,即A=4,R=4,G=4,B=4,那么一个像素点占4+4+4+4=16位 

Bitmap.Config ARGB_8888:每个像素占四位,即A=8,R=8,G=8,B=8,那么一个像素点占8+8+8+8=32位

Bitmap.Config RGB_565:每个像素占四位,即R=5,G=6,B=5,没有透明度,那么一个像素点占5+6+5=16位

Bitmap.Config ALPHA_8:每个像素占四位,只有透明度,没有颜色。

一般情况下我们都是使用的ARGB_8888,由此可知它是最占内存的,因为一个像素占32位,8位=1字节,所以一个像素占4字节的内存。假设有一张480x800的图片,如果格式为ARGB_8888,那么将会占用1500KB的内存。

ARGB 是一种色彩模式,也就是RGB色彩模式附加上Alpha(透明度)通道,常见于32位位图的存储结构。

RGB 色彩模式是工业界的一种颜色标准,是通过对红(R)、绿(G)、蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,RGB即是代表红、绿、蓝三个通道的颜色,这个标准几乎包括了人类视力所能感知的所有颜色,是目前运用最广的颜色系统之一。

android 定义颜色color时6位或8位值的区别:

  • 6位(#000000)就是RGB值
  • 8位(#1e000000)ARGB 头两位是透明度,00是完全透明,ff是完全不透明,后6位是RGB值,比较适中的透明度值
  • 0xffff00ff 分组时 0x|ff|ff00ff 分别表示 整数|透明度|颜色值
Android 中使用16进制表示的,8个16进制转成二进制就是24位;(或许,求指正)

4、图片大小计算方式

横向的像素*竖向的像素点*位数/8等于内存的字节数=内存大小

5、Android上不同的hdpi的内存大小

density0.7511.5233.54densityDpi120160240320480560640DpiFolderldpimdpihdpixhdpixxhdpixxxhdpixxxxhdpi而因为Android碎片化 所以0~120 属于120范围的 120~160 属于160范围的

详解如:

http://windrunnerlihuan.com/2016/07/12/%E6%B5%85%E6%9E%90Bitmap%E5%8D%A0%E6%8D%AE%E5%86%85%E5%AD%98%E5%A4%A7%E5%B0%8F/

内存大小 = (设备屏幕dpi / 资源所在目录dpi)^ 2 × 图片原始宽 × 图片原始高 × 像素大小