gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:55:33 24 4
gpt4 key购买 nike

我在可绘制文件夹中有 270 x 2693 像素的图像。当我尝试在 imagview 中设置该图像时,我收到了 Bitmap too be uploaded into a texture 警告。

图像在 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" />

这里的 hindi 是可绘制文件夹中的图像,其大小为 270 x 2693 像素。

最佳答案

问题

此问题通常与 OpenGL 最大纹理大小或设备内存有关。您得到的完整错误可能类似于

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

内存通常是大型图像的问题,但在您的情况下,270x2693 是 727110 像素。如果您在 RGBA 中,它是每个像素 4 个字节,所以 727110 * 4 = 2908440 个字节,大约是 2.7 兆字节。这应该适用于任何设备。

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

编辑:

在我的例子中,问题是我的 640x1136 初始图像似乎自动调整为 1280x2272 图像大小以适合我的设备大屏幕。这也会触发您遇到的错误消息。

如果进一步出现此错误,则它与用于加载图像的 dpi 有关。正如您将在 Android 引用资料中找到的那样,设备将根据其 dpi 加载图像,这可以改变加载到内存中的图像的大小。

解决方案

  • 除了检测设备尺寸外,您别无选择正确加载图像。

    查看如何load large bitmap in memory .

  • 您还可以为不同的设备 dpi 使用不同的图像尺寸可以由 Android 从 Drawable 文件夹中自动选择。

    参见 How to support screens它告诉你如何设置你的文件夹。

  • 如其他所述,使用较小的图像或减小其大小。

相关信息

有需要的话我建议你去那里看看support multiples screens .

Android 还收集每 7 天更新一次的数据 Screens size在他们的用户中。

另请查看 this interesting answer这指出了一个了解内存中图像大小的好网站。

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

关于android - 在 imageview 中加载大尺寸图像问题。位图太大,无法上传到纹理中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15154031/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com