个人收集的图片知识点

申明:低级码农问题解决中的参考和解决后的小结,仅用于个人记录,能力有限,可能有些错误,缺陷不自知,欢迎在评论中指正,谢谢!

图片的有损压缩和无损压缩

  参考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=,效果是一样的。

 

posted @ 2020-03-15 13:28  hellodingc  阅读(349)  评论(0)    收藏  举报