android - 检测 Android Lollipop 上的分辨率是否过高

标签 android image-processing android-imageview android-image android-5.0-lollipop

我必须在 ImageView 中显示一些图片。 其中一些可能分辨率太高,给我

W/OpenGLRenderer﹕ Bitmap too large to be uploaded into a texture (3744x5616, max=4096x4096)

我用这个方法来检测这种情况:

public boolean isResTooHigh() {
    int[] maxSize = new int[1];
    GLES10.glGetIntegerv(GL10.GL_MAX_TEXTURE_SIZE, maxSize, 0);

    return (maxSize[0] < width) || (maxSize[0] < height);
}

图片的宽度和高度由图片来源提供。

但现在在我运行 Lollipop 的 Nexus 4 和我的模拟器上,maxSize[0] 始终为 0。 那么,我该如何检测这个问题呢?

最佳答案

该 GL 查询需要线程上的 Activity GL 上下文。以前,您的应用程序不小心使用了框架的私有(private) GL 上下文来执行该查询。在 Lollipop 中,由于各种体系结构的变化,此上下文不再泄漏到应用程序代码中,因此查询现在失败了。如果您查看 logcat,您可能会看到类似这样的内容:“在没有当前上下文的情况下调用 opengl es api”。

如果需要,您可以创建自己的 GL 上下文来执行该查询。或者,您可以假设屏幕分辨率是最大的,或者使用可扩展的解决方案,例如平铺方法。

关于android - 检测 Android Lollipop 上的分辨率是否过高,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27026332/

相关文章:

android - 广告加载期间的布局问题

android - 如何更改圆形进度条的颜色?

python - matplotlib `imshow(interpolation=' nearest')` 做什么?

java - 为什么我拍摄了多次但应用程序只选择第一张照片进行处理

c++ - 识别开放和封闭的形状opencv

android - 如何在android中获取Imageview像素

android - 按名称将资源图像获取到自定义游标适配器中

java - 检测 LibGdx 中文本点击的方法

android - 警告 : linker: app_process has text relocations. 这会浪费内存并且存在安全风险。请修复。权限被拒绝

Android:通过 SimpleAdapter 在 imageview 中显示图像