Android如何使用BitmapFactory选项缩放图像

时间:2012-02-20 12:17:59

标签: android bitmap decode decoding bitmapfactory

我想使用BitmapFactory.decodeFile(路径,选项)解码SD卡中的图像。
我还希望将大于2048x2048像素的图像缩小到最多2048x2048(保持比例)。
我可以在获取位图后手动执行此操作,但除了已经分配的字节外,还需要分配大量字节。
我应该如何设置我的BitmapFactory.Options对象以获得该效果?
感谢

3 个答案:

答案 0 :(得分:10)

首次加载图片时使用BitmapFactory.Options.inSampleSize,使尺寸尽可能接近目标尺寸,然后使用Bitmap.createScaledBitmap缩放到您想要的确切尺寸。

this answer中有一些代码。

答案 1 :(得分:5)

首先在inJustDecodeBounds中将true设置为Options,这样就可以显示图片的大小,而无需加载任何图片数据。
如果图像尺寸小于最大尺寸,则只需照常加载即可 另一方面,如果它太大,请使用inSampleSize来读取较小的位图。

注意:我不认为解码在使用inSampleSize时会进行任何过滤,因此您可能会丢失一些细节,但是因为您的图像尺寸太大(2048像素)我不喜欢认为这会导致任何问题。

答案 2 :(得分:3)

您可以尝试这样的事情:

int imageWidth, imageHeight;

Bitmap result = Bitmap.createScaledBitmap(bitmapPicture,
                        imageWidth, imageHeight, false);

在这里,您可以添加自己的宽度和高度。 bitmapPictureBitmap的对象。 如果这对您有任何帮助,请告诉我。