android – 在imageview中加载大尺寸图像问题.位图太大,无法上传到纹理中

我在可绘制文件夹中有270 x 2693像素的图像.当我尝试在imagview中设置该图像时,我得到的Bitmap太大而无法上传到纹理警告中.

图像在Android设备中完美设置< 4.0但不是套件> 4.0设备.

请帮我解决这个问题.

<ImageView
   android:id="@+id/imageView"
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:scaleType="fitXY"
   android:contentDescription="@string/name"
   android:src="@drawable/hindi" />

这里印地文是一个可绘制文件夹中的图像,其大小为270 x 2693像素.

解决方法

问题

此问题通常与OpenGL最大纹理大小或设备内存有关.你得到的完整错误可能是这样的

W/OpenGLRenderer(12681): Bitmap too large to be uploaded into a texture (270×2693,max=2048×2048)

内存通常是大尺寸图像的问题,但在您的情况下270×2693是727110像素.如果您使用RGBA,则每像素4个字节,因此727110 * 4 = 2908440字节,大约为2,7兆字节.这应该适合任何设备.

因此,您的问题可能与OpenGL有关.可能发生的是Android设备> 4.0您正在测试检测到您的图像对于OpenGL而言太大并为您调整大小,而旧设备则没有.

编辑:

在我的情况下,问题是我的640×1136启动图像似乎自动重新调整为1280×2272图像大小,以适应我的设备巨大的屏幕.这也会触发您遇到的错误消息.

如果再次出现此错误,则与用于加载图像的dpi有关.正如您将在Android参考上找到的那样,设备将加载关于其dpi的图像,这可能会改变内存中加载的图像的大小.

>除了检测设备大小之外,您没有太多选择
正确加载图像.

了解如何load large bitmap in memory.
>您还可以为不同的设备dpi使用不同的图像大小
可以从Android自动从Drawable文件夹中选择.

请参阅How to support screens,它告诉您如何设置您的
夹.
>如其他所述,使用较小的图像或减小其大小.

相关信息

如果你需要support multiples screens,我建议你去看看.

Android还会收集其用户在Screens size每7天更新一次的数据.

另请参阅this interesting answer,它指出了一个了解内存中图像大小的好网站.

最后,如果您已在应用程序中使用OpenGL,请查看this answer which shows how to detect the max OpenGL texture size.

相关文章

文章浏览阅读8.8k次,点赞9次,收藏20次。本文操作环境:win1...
文章浏览阅读1.2w次,点赞15次,收藏69次。实现目的:由main...
文章浏览阅读3.8w次。前言:最近在找Android上的全局代理软件...
文章浏览阅读2.5w次,点赞17次,收藏6次。创建项目后,运行项...
文章浏览阅读8.9w次,点赞4次,收藏43次。前言:在Android上...
文章浏览阅读1.1w次,点赞4次,收藏17次。Android Studio提供...