3

我正在使用这个广为人知的代码

Display display = this.getWindowManager().getDefaultDisplay();
            float dw = display.getWidth();
            float dh = display.getHeight();

            // load image dimensions, not the image itself
            BitmapFactory.Options bmpFactoryOptions = new BitmapFactory.Options();
            bmpFactoryOptions.inJustDecodeBounds = true;
            Bitmap bmp = BitmapFactory.decodeFile(MyApp.getImageFilePath());


            int heightRatio = (int) FloatMath.ceil(bmpFactoryOptions.outHeight / dh);
            int widthRatio = (int) FloatMath.ceil(bmpFactoryOptions.outWidth / dw);

            if ((heightRatio > 1) && (widthRatio > 1))// if true one side of the image is bigger than the screen
            {
                if (heightRatio > widthRatio) {
                    bmpFactoryOptions.inSampleSize = heightRatio;
                } else {
                    bmpFactoryOptions.inSampleSize = widthRatio;
                }
            }
            // decode it for real
            bmpFactoryOptions.inSampleSize = bmpFactoryOptions.inSampleSize;
            bmpFactoryOptions.inPreferredConfig = Bitmap.Config.ARGB_8888; //http://www.curious-creature.org/2010/12/08/bitmap-quality-banding-and-dithering/
            bmpFactoryOptions.inJustDecodeBounds = false;
            bmpFactoryOptions.inDither = true;
            bmp = BitmapFactory.decodeFile(MyApp.getImageFilePath(), bmpFactoryOptions);

            ImageView photo = (ImageView) this.findViewById(R.id.imageView1);

问题是

bmpFactoryOptions.outWidth
bmpFactoryOptions.outHeight
bmpFactoryOptions.inSampleSize

永远有价值0。我已经在三种不同的设备上对其进行了测试,我做错了什么?

和设置 bmpFactoryOptions.inSampleSize = bmpFactoryOptions.inSampleSize + 1;

没有效果

4

1 回答 1

3

与标题所说的相反,您的 BitmapFactory 正在返回一个 Bitmap 就好了。

您从未bmpFactoryOptions在此语句中分配您的句柄。所以查询它应该不会产生任何结果。增加它并没有帮助,因为您从未将它初始化为图像的属性。

Bitmap bmp = BitmapFactory.decodeFile(MyApp.getImageFilePath());

改为执行以下操作:

Bitmap bmp = BitmapFactory.decodeFile(MyApp.getImageFilePath(), bmpFactoryOptions);

这会将您的 bmpFactoryOptions 附加到您的 bmp。然后您可以查询选项。请注意,您的 BitmapFactory 正在返回一个非常好的位图,只是一个您对其属性没有任何句柄的位图。

于 2012-09-28T15:41:51.207 回答