Android如何使用BitmapFactory选项缩放图像
我想用BitmapFactory.decodeFile(路径,选项)对SD卡上的图像进行解码。Android如何使用BitmapFactory选项缩放图像,android,bitmap,decode,decoding,bitmapfactory,Android,Bitmap,Decode,Decoding,Bitmapfactory,我想用BitmapFactory.decodeFile(路径,选项)对SD卡上的图像进行解码。 我还希望将大于2048x2048像素的图像缩小到最多2048x2048(保持比例)。 我可以在获取位图后手动执行此操作,但这需要在已分配字节的基础上再分配大量字节。 我应该如何设置BitmapFactory.Options对象以获得该效果? 谢谢您可以尝试以下方法: int imageWidth, imageHeight; Bitmap result = Bitmap.createScaledBit
我还希望将大于2048x2048像素的图像缩小到最多2048x2048(保持比例)。
我可以在获取位图后手动执行此操作,但这需要在已分配字节的基础上再分配大量字节。
我应该如何设置BitmapFactory.Options对象以获得该效果?
谢谢您可以尝试以下方法:
int imageWidth, imageHeight;
Bitmap result = Bitmap.createScaledBitmap(bitmapPicture,
imageWidth, imageHeight, false);
在这里,您可以添加自己的宽度和高度bitmapPicture
是位图的对象。
如果这对您有帮助,请告诉我。首先在
选项中将inJustDecodeBounds
设置为true
,这将为您提供图像大小,而无需加载任何图像数据。
如果图像大小小于最大大小,则只需像往常一样加载即可。
另一方面,如果太大,请使用读取较小的位图
注意:我不认为解码在使用inSampleSize时会进行任何过滤,因此您可能会丢失一些细节,但由于您的图像大小太大(2048像素),我认为这不会导致任何问题。在首次加载图像时使用,以使图像大小尽可能接近目标大小,然后使用Bitmap.createScaledBitmap
缩放到所需的精确大小
这方面有一些代码。正如我所说,我试图避免再分配2048x2048像素,但让BitmapFactory自动完成,因为我的内存非常不足。你的方法只是分配了一个新的位图,这不是我想要的。谢谢你的回复。可能是重复的