我正在将jpg文件读入位图。我正在阅读的文件尺寸为1600x1600,但位图的尺寸为600x600。为什么要缩小规模?这是我的代码:
BitmapFactory.Options options = new BitmapFactory.Options();
options.inScaled = false;
options.inPreferredConfig = Bitmap.Config.ARGB_8888;
options.inMutable = true;
b = BitmapFactory.decodeFile(imageFile, options);
Log.d("###", "bitmapWidth: " + b.getWidth());
Log.d("###", "bitmapHeight: " + b.getHeight());
我得到以下日志:
12-19 10:03:10.551: D/###(4125): bitmapWidth: 600
12-19 10:03:10.551: D/###(4125): bitmapHeight: 600
如您所见,我将inScaled
标志设置为false。为什么要缩小规模?
修改
我甚至试过了inJustDecodeBounds
,我得到了相同的结果。
答案 0 :(得分:2)
您的代码应该按照提到的here工作,但不能解释为什么它不起作用..
添加这些行
options.inDensity = 0;
options.inTargetDensity = 0;
options.inSampleSize = 1;
1将按书面here
的方式工作"The sample size is the number of pixels in either dimension that correspond to a single pixel in the decoded bitmap. For example, inSampleSize == 4 returns an image that is 1/4 the width/height of the original, and 1/16 the number of pixels. Any value <= 1 is treated the same as 1. Note: the decoder uses a final value based on powers of 2, any other value will be rounded down to the nearest power of 2."