关于android无法读取图片正确分辨率的原因
2018-01-05 15:13
316 查看
第二次因为这个错误导致浪费很长时间找原因,所以要赶紧记录下来。
过程是这样的,在使用android读取图片的时候,就是使用BitmapFactory.decodeResource(this.getResources(),R.drawable.base)的时候
返回的图片大小和真实图片大小不一样有木有,比如图片是700*450的, 但读出来是525*337的。如果有遇到过此类情况,请往下看
这个错误,只能怪咱们学艺不精,原因就是你没在相应的资源文件夹里放图片就是 (drawable-ldpi mdpi ldpi),你肯定只放了一个文件夹
举个实例,比如图片A 700*450只放在mdpi里,这时候安卓会先判断屏幕的dpi 如果是120 它就去ldpi找 ,如果是160就去mdpi,如果是240就去hdpi
如果它去找了ldpi发现你没图片,它就去mdpi了, 但它会把图片缩放成525*337大概这个分辨率。 算法是 700*0.75 450*0.75 = 525 * 337
看到这里如果你不太明白这些数字杂回事,请去了解一下 dpi 密度, dpi和像素的关系等等.
说下解决办法,目前我是把图片复制在三个文件夹里.这样它就会找到相应的了。不过我这样可能不科学,但因我的业务是可以决定是哪种硬件设备的。
过程是这样的,在使用android读取图片的时候,就是使用BitmapFactory.decodeResource(this.getResources(),R.drawable.base)的时候
返回的图片大小和真实图片大小不一样有木有,比如图片是700*450的, 但读出来是525*337的。如果有遇到过此类情况,请往下看
这个错误,只能怪咱们学艺不精,原因就是你没在相应的资源文件夹里放图片就是 (drawable-ldpi mdpi ldpi),你肯定只放了一个文件夹
举个实例,比如图片A 700*450只放在mdpi里,这时候安卓会先判断屏幕的dpi 如果是120 它就去ldpi找 ,如果是160就去mdpi,如果是240就去hdpi
如果它去找了ldpi发现你没图片,它就去mdpi了, 但它会把图片缩放成525*337大概这个分辨率。 算法是 700*0.75 450*0.75 = 525 * 337
看到这里如果你不太明白这些数字杂回事,请去了解一下 dpi 密度, dpi和像素的关系等等.
说下解决办法,目前我是把图片复制在三个文件夹里.这样它就会找到相应的了。不过我这样可能不科学,但因我的业务是可以决定是哪种硬件设备的。
相关文章推荐
- 关于android无法读取图片正确分辨率的原因
- [笔记].关于使用fscanf无法录入正确数据的原因分析
- 关于android读取各个位置的图片
- 关于Android读取不同位置(drawable,asset,SDCard)的图片资源的总结
- 关于Android读取不同位置(drawable,asset,SDCard)的图片资源的总结(转)
- Android(SpreadTurm) 从照相机进如图片浏览界面,长按图片上下会闪动,无法读取下一张图片
- 关于Android读取不同位置(drawable,asset,SDCard)的图片资源的总结
- 关于Android SDK Manager无法获取更新列表的正确设置
- 关于Android图片分辨率应该放到哪个文件夹的问题(drawable-hdpi......)
- 【android-tips】关于android应用R文件无法读取
- android红米等关于读取本地文件夹图片获取路径的问题的解决
- Android 中关于draw中图片分辨率的说明
- Android 读取R.raw文件夹下图片的分辨率问题
- 关于在虚拟机中无法读取usb设备的一种原因及处理方法
- 关于Android 图片的多分辨率适配
- 关于Android读取不同位置(drawable,asset,SDCard)的图片资源的总结
- 关于图片资源在android2.1/2.2/2.3下无法显示的问题以及解决方法
- 关于在虚拟机中无法读取usb设备的一种原因及处理方法
- Android 关于图片文件夹后缀错误,使应用在源码下编译通过却无法运行的错误
- 对strlen()函数无法正确读取字符串数组长度的原因剖析