Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/189.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
Java 从字节数组转换大位图_Java_Android_Bitmap_Bytearray_Bitmapfactory - Fatal编程技术网

Java 从字节数组转换大位图

Java 从字节数组转换大位图,java,android,bitmap,bytearray,bitmapfactory,Java,Android,Bitmap,Bytearray,Bitmapfactory,我知道这个问题在这里被问了很多次。我经历了我遇到的一切,不幸的是他们都说了同样的答案 我的要求:我需要将大字节数组转换为位图。我的意思是,我正在发送一个http请求来获取一个图像,该图像作为字节数组获取,我需要在我的应用程序中的图像视图中显示该图像。问题是,我需要获取的图像可以是任何大小,从100kb到10+mb不等。以下是我在互联网上找到的在android中将字节数组转换为位图的解决方案 Bitmap bitmap = BitmapFactory.decodeByteArray(bitmapd

我知道这个问题在这里被问了很多次。我经历了我遇到的一切,不幸的是他们都说了同样的答案

我的要求:我需要将大字节数组转换为位图。我的意思是,我正在发送一个http请求来获取一个图像,该图像作为字节数组获取,我需要在我的应用程序中的图像视图中显示该图像。问题是,我需要获取的图像可以是任何大小,从100kb到10+mb不等。以下是我在互联网上找到的在android中将字节数组转换为位图的解决方案

Bitmap bitmap = BitmapFactory.decodeByteArray(bitmapdata , 0, bitmapdata.length); //bitmapdata is the byte array

这非常适用于小图像,但当图像大小从2-3mb开始增加时,这将导致内存不足错误。有没有更好的位图转换方法不会使我的应用程序崩溃?

重位图通常意味着非常大的位图。 通过使用BitmapFactory的选项,可以限制字节数组(或输入流)生成的位图的大小:

Options options = new Options();
options.outWidth = widthLimit;
options.outHeight = heightLimit;
Bitmap bitmap = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length, options);

这应该可以让你开始了。

这可能会对你有所帮助。它来自文件输入流。我需要一个字节数组。是的。。。如果您正在从gallery中获取图像,则您没有文件路径。。然后您可以尝试我的答案。因此,请将decodeByteArray与BitmapFactory一起使用。选项参数(如关于的链接中的参数)我希望将作为http请求响应而获得的字节数组转换为位图。不是文件。如果我需要全分辨率的位图而不缩小尺寸,该怎么办?没有必要比屏幕尺寸更高的分辨率。试着限制一下?如果您试图显示用户应该能够滚动的真正海量图片,那么您可能应该尝试将图像分割成多个部分,甚至可以考虑使用OpenGL ES纹理进行渲染。让我试试这个:我知道我在测试极端情况,但当我使用16mb大小的图像进行测试时,这导致了相同的崩溃。我可能会收到任何大小的图像,大多数都是我的应用程序中的大尺寸图像。