
我正在加载两个位图,一个为jpg,另一个为png格式.图像完全相同,并以相同的分辨率保存:3461×2480.
当我在InSampleSize中使用具有相同比例的BitmapFactory.decodefile()加载图像时,会得到具有不同大小的内存位图,jpg略大于png.我同时在图库中显示,区别很明显.我已经在LogCat中打印了位图大小,并验证了它们在加载后具有不同的大小.
这两个映像都位于外部存储中,并且位于同一目录中.
谁知道加载后它们的大小为何不同?我该如何控制?
我使用的代码是:
public static Bitmap loadImageScaled(String filename, int wIDth, int height){ // Get the dimensions of the bitmap BitmapFactory.Options bmOptions = new BitmapFactory.Options(); bmOptions.inJustDecodeBounds = true; BitmapFactory.decodefile(filename, bmOptions); int photoW = bmOptions.outWIDth; int photoH = bmOptions.outHeight; Log.d(TAG, "Image w= " + photoW + " h=" + photoH + " " + filename); Log.d(TAG, "In w= " + wIDth + " h=" + height); // Determine how much to scale down the image int scaleFactor = Math.min(photoW/wIDth, photoH/height); Log.d(TAG, "scaleFactor = " + scaleFactor); // Decode the image file into a Bitmap bmOptions.inJustDecodeBounds = false; bmOptions.inSampleSize = scaleFactor; bmOptions.inPurgeable = true; Bitmap bitmap = BitmapFactory.decodefile(filename, bmOptions); Log.d(TAG, "Out w= " + bitmap.getWIDth() + " h=" + bitmap.getHeight()); return bitmap;}在LogCat中,我收到以下消息:
Image w= 3461 h=2480 img09.jpgIn w= 173 h=124scaleFactor = 20Out w= 216 h=155Image w= 3461 h=2480 img10.pngIn w= 173 h=124scaleFactor = 20Out w= 173 h=124任何想法?
解决方法:
是的,我猜没关系:)如果您查看文档(http://developer.android.com/reference/android/graphics/BitmapFactory.Options.html#inSampleSize),请注意它的工作原理.
而且,如果您计算数字,则可以看到3461/216 = 16和3461/173 =20.这意味着png正在使用所需的样本大小,但是jpg会四舍五入到最接近的2的幂.
总结以上是内存溢出为你收集整理的android-以不同的位图大小在jpg和png中加载同一图像全部内容,希望文章能够帮你解决android-以不同的位图大小在jpg和png中加载同一图像所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)