2012-02-20 18 views
17

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

回答

3

你可以尝试这样的事情:

int imageWidth, imageHeight; 

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

在这里,你可以添加自己的宽度和高度。 bitmapPictureBitmap的对象。 让我知道这是否对你有任何帮助。

+1

就像我说的,我试图避免不得不分配另一个2048x2048像素,但让BitmapFactory自动执行此操作,因为我的内存很短。你的方法只是分配一个新的位图,这不是我想要的。感谢您的回复。 – saarraz1 2012-02-20 12:26:47

5

从您的Options开始,将inJustDecodeBounds设置为true,这将为您提供图像的大小,而不会加载任何图像数据。
如果图片尺寸小于您的最大尺寸,则只需像往常一样加载。
另一方面,如果太大,请使用inSampleSize来读取较小的位图。

注:我不认为解码做任何过滤使用inSampleSize的时候,所以你可能会失去一些细节,但你的图像尺寸是如此之大(2048像素),我不认为这会造成任何问题。