个人收集的图片知识点
申明:低级码农问题解决中的参考和解决后的小结,仅用于个人记录,能力有限,可能有些错误,缺陷不自知,欢迎在评论中指正,谢谢!
图片的有损压缩和无损压缩
参考https://zhidao.baidu.com/question/214587137.html,我把原内容复制过来,避免打开外链。
1、压缩后的文件质量不同
有损压缩是对图像本身的改变,在保存图像时保留了较多的亮度信息,而将色相和色纯度的信息和周围的像素进行合并,合并的比例不同,压缩的比例也不同,由于信息量减少了,所以压缩比可以很高,图像质量也会相应的下降。
无损压缩是对文件本身的压缩,和其它数据文件的压缩一样,是对文件的数据存储方式进行优化,采用某种算法表示重复的数据信息,文件可以完全还原,不会影响文件内容,对于数码图像而言,也就不会使图像细节有任何损失。
2、压缩时内存和磁盘占用空间不同
有损压缩 有损压缩可以减少图像在内存和磁盘中占用的空间,在屏幕上观看图像时,不会发现它对图像的外观产生太大的不利影响。无损压缩不能减少图像的内存占用的空间,压缩率比较低。
3、还原性上不同
无损压缩就是可以完全还原的,有损压缩还原后不能和原来的文件一样,有一定的损耗的。
4、应用领域上不同
有损压缩广泛应用于语音,图像和视频数据的压缩;无损压缩受压缩比的限制暂时只用于文本数据,程序和特殊应用场合的图像数据(如指纹图像,医学图像等)的压缩.
5、压缩率不同
无损压缩压缩率是受到数据统计冗余度的理论限制,一般为2:1到5:1。有损压缩利用了人类对图像或声波中的某些频率成分不敏感的特性,允许压缩过程中损失一定的信息,虽然不能完全恢复原始数据,但却换来了大得多的压缩比最高可达200:1甚至更多。
JPG和PNG区别
参考https://www.zhihu.com/question/29758228/answer/109973408,我只列出自己能理解的,方便个人查看。
jpg是有损压缩,24位真彩色,不支持透明度;png是无损压缩,8位,16位,32位真彩色,32位支持透明度。
jpg不适合于线条绘图(drawing)和其他文字或图示(iconic)的图形,因为它的压缩方法用在这些图形的型态上,会得到不适当的结果。
Android 图片读取到内存占用空间大小/drwable目录下的图片资源显示在屏幕上的宽高
从sd卡读取一张图片到内存,占用空间大小为 w * h * 4个字节;那么把drawable目录下的图片资源文件读取到内存中占用空间大小是多少呢,这跟该图片在内存中的bitmap有关。drawable下的图片,读取成内存中的bitmap后,宽高是会变化的,变换公式为:
bmpHeight = hight / drawbleDensity * screenDensity
其中,hight是drawable下图片的高度(或者宽度),drawableDensity是drawable-mdpi、drawable-hdpi、drawable-xhdpi等目录对应的density(对应数值如下表,xxxhdpi好像等于4,不太确定),screenDensity是手机屏幕的density。
| mdpi | hdpi | xhdpi | xxhdpi | xxxhdpi |
| 1 | 1.5 | 2 | 3 | ? |
不同drawable目录下的图片,单位是px,要先除以drawable目录对应的density,以换算成dp,然后再显示到屏幕上时,需要乘以屏幕的density,得到实际占用的px,得到上面的公式。
下面是验证的结果,使用了一张74x74像素的图片,依次是从sd卡,mdpi,hdpi,xhdpi,xxhdpi读取,得到的bitmap的体积和宽、高,以及在屏幕上的显示效果。
sdcard = 21904, 74x74
bmpDrawable-m 197136, 222x222
bmpDrawable-h 87616, 148x148
bmpDrawable-xh 49284, 111x111
bmpDrawable-xxh 21904, 74x74

先读取drawable下图片资源的bitmap,然后设置给ImageView,和通过setImageResource,以及在布局文件中Android:src=,效果是一样的。
浙公网安备 33010602011771号