从文件加载大图像
Load huge image from file
我正在使用存储在 Environment.getDataDirectory() 上的图片,它们的宽度为 1920,高度为 1080,我想将它们加载到图像视图中使用此代码:
File imgFile = new File(Environment.getDataDirectory() + "/data/com.My.Package/files/Pictures/Sun.jpg");
Bitmap myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath());
zoomImage.setImageBitmap(myBitmap);
但是在 Android 6.0 (Samsung Galaxy S6 Edge) 我在 [=18] 上收到这个 错误 =]Android 5 (HTC One) 工作得很好:
W/OpenGLRenderer: Bitmap too large to be uploaded into a texture (3240x5760, max=4096x4096)
现在回答问题:
有没有办法避免这个错误并且不降低质量(我需要这种质量,因为你可以缩放图像)
正如您的错误指出的那样,您的图片太大而无法加载。
基本上,现在您正在将整个图像加载到内存中。
您必须获得更小/按比例缩小的位图版本。
您可以使用 BitmapFactory.Options、
轻松完成此操作
这里有一个 link,其中详细介绍了为此使用的推荐技术:developer.android.com/training/displaying-bitmaps/load-bitmap.html
请勾选"Bitmap too large to be uploaded into a texture"
和Prevent bitmap too large to be uploaded into a texture android
和你的日志一样的错误
我认为你应该尝试用 Glide 加载它。
过程非常简单,速度很快,希望不会出现任何 OOM
只需在您的 build.gradle
中编译它
compile 'com.github.bumptech.glide:glide:3.7.0'
然后是
Glide
.with(this)
.load(imgFile)
.into(zoomImage);
就是这样,希望您永远不会再面对 OOM
,我在我的许多应用程序中处理过图像,但我从未面对过 OOM
。
希望对您有所帮助
我正在使用存储在 Environment.getDataDirectory() 上的图片,它们的宽度为 1920,高度为 1080,我想将它们加载到图像视图中使用此代码:
File imgFile = new File(Environment.getDataDirectory() + "/data/com.My.Package/files/Pictures/Sun.jpg");
Bitmap myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath());
zoomImage.setImageBitmap(myBitmap);
但是在 Android 6.0 (Samsung Galaxy S6 Edge) 我在 [=18] 上收到这个 错误 =]Android 5 (HTC One) 工作得很好:
W/OpenGLRenderer: Bitmap too large to be uploaded into a texture (3240x5760, max=4096x4096)
现在回答问题: 有没有办法避免这个错误并且不降低质量(我需要这种质量,因为你可以缩放图像)
正如您的错误指出的那样,您的图片太大而无法加载。
基本上,现在您正在将整个图像加载到内存中。
您必须获得更小/按比例缩小的位图版本。
您可以使用 BitmapFactory.Options、
轻松完成此操作这里有一个 link,其中详细介绍了为此使用的推荐技术:developer.android.com/training/displaying-bitmaps/load-bitmap.html
请勾选"Bitmap too large to be uploaded into a texture"
和Prevent bitmap too large to be uploaded into a texture android
和你的日志一样的错误
我认为你应该尝试用 Glide 加载它。
过程非常简单,速度很快,希望不会出现任何 OOM
只需在您的 build.gradle
compile 'com.github.bumptech.glide:glide:3.7.0'
然后是
Glide
.with(this)
.load(imgFile)
.into(zoomImage);
就是这样,希望您永远不会再面对 OOM
,我在我的许多应用程序中处理过图像,但我从未面对过 OOM
。
希望对您有所帮助