gpt4 book ai didi

java - 是否有修复 "Bitmap too Large to be uploaded into a texture"的 BitmapFactory 分辨率?

转载 作者:行者123 更新时间:2023-11-30 03:59:07 25 4
gpt4 key购买 nike

在某些设备上,位图形式的图像似乎对于要容纳它们的 ImageView 来说太大了。

图像将通过相机和网络获得。它们将在允许您移动图像、缩放等以查看缺陷的 Activity 中一次显示 1 个。

似乎在使用来自相机的图像时,我们得到“位图太大而无法上传到纹理中。”

我不想对比例进行硬编码,但我想拍摄任何图像,并通过位图工厂生成适合 Imageview 的图像。现在我会拍摄该图像,因为它不是太大,并通过将矩阵与 ImageView 相关联来缩放它。

最佳答案

我在 stackoverflow 上四处寻找如何解决这个问题。我得出以下结论:

  1. 它基于一个单独的设备 GL_MAX_TEXTURE_SIZE 根据:"Bitmap too large to be uploaded into a texture"和 jptsetung 的回答和基本评论也指向 HW accelerated activity - how to get OpenGL texture size limit? Romain Guy 对此有深刻的理解。
  2. 您需要了解您的设备可以处理哪些类型的数据。
  3. 当您执行以下代码时,使用 2 会将图像大小缩小四分之一。

    BitmapFactory.Options ops = new BitmapFactory.Options();
    opts.inSampleSize = 2;

    这种理解来自于它将宽度和高度减半,因此大小减半的概念。

  4. 如果您不想像我一样对其进行硬编码。您可以使用 GL_MAX_TEXTURE_SIZE 来帮助确定它是什么。

作为最后的说明,我所做的是我使用位图获取 imageview,并为其分配一个 MATRIX,然后按比例缩放矩阵

Matrix m = new Matrix();
m.postScale(scaleX,scaleY);

它允许您获取图像的样本以使其变小,然后将其放大以保持相同的大小。 inSampleSize 是 scaleX 和 scaleY 的大小,以使其按比例放大。

可能的问题:像素化。根据图像的大小,它不会太糟糕,但你会看到其中的一些。

这是为了解决设备的约束。我会检查图像的宽度和高度有多大,如果大于 GL_MAX_TEXTURE_SIZE,它会做一些计算并使其低于 balue。

我相信下一个标准的事情是:

  1. ...

  2. 利润!

关于java - 是否有修复 "Bitmap too Large to be uploaded into a texture"的 BitmapFactory 分辨率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12823020/

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