Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/194.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android如何使用BitmapFactory选项缩放图像_Android_Bitmap_Decode_Decoding_Bitmapfactory - Fatal编程技术网

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

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

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

谢谢

您可以尝试以下方法:

int imageWidth, imageHeight;

Bitmap result = Bitmap.createScaledBitmap(bitmapPicture,
                        imageWidth, imageHeight, false);
在这里,您可以添加自己的宽度和高度
bitmapPicture
是位图的对象。
如果这对您有帮助,请告诉我。

首先在
选项中将
inJustDecodeBounds
设置为
true
,这将为您提供图像大小,而无需加载任何图像数据。
如果图像大小小于最大大小,则只需像往常一样加载即可。
另一方面,如果太大,请使用读取较小的位图

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

在首次加载图像时使用,以使图像大小尽可能接近目标大小,然后使用
Bitmap.createScaledBitmap
缩放到所需的精确大小


这方面有一些代码。

正如我所说,我试图避免再分配2048x2048像素,但让BitmapFactory自动完成,因为我的内存非常不足。你的方法只是分配了一个新的位图,这不是我想要的。谢谢你的回复。可能是重复的