Java 是否有要修复的BitmapFactory分辨率;位图太大,无法上载到纹理中;?

Java 是否有要修复的BitmapFactory分辨率;位图太大,无法上载到纹理中;?,java,android,view,Java,Android,View,在某些设备上,位图形式的图像对于要容纳它们的ImageView来说似乎太大了 图像将通过摄像机和网络获取。它们将在活动中一次显示一个,该活动允许您移动图像、缩放等以查看缺陷 似乎当使用来自相机的图像时,我们得到“位图太大,无法上传到纹理中。” 我不想硬编码比例,但我想拍摄任何图像,并通过位图工厂生成一个适合Imageview的图像。然后,我会在图像不太大的情况下拍摄它,并通过将矩阵与ImageView关联来缩放它。我在stackoverflow周围寻找如何解决这个问题。我得出以下结论: 它基于i

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

图像将通过摄像机和网络获取。它们将在活动中一次显示一个,该活动允许您移动图像、缩放等以查看缺陷

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


我不想硬编码比例,但我想拍摄任何图像,并通过位图工厂生成一个适合Imageview的图像。然后,我会在图像不太大的情况下拍摄它,并通过将矩阵与ImageView关联来缩放它。

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

  • 它基于invidicual devices GL_MAX_TEXTURE_SIZE,根据:和jptsetung的回答以及相关评论,罗曼·盖伊对此给出了坚实的理解
  • 您需要了解您的设备可以处理什么样的排序数据
  • 执行以下代码时,使用2将使图像大小增加四分之一

    BitmapFactory.Options ops = new BitmapFactory.Options();
    opts.inSampleSize = 2;
    
    这种理解来自于这样一种观念,即它将是宽度和高度的一半,因此是大小的四分之一

  • 如果你不想像我一样硬编码。您可以使用GL_MAX_TEXTURE_SIZE来帮助确定它是什么
  • 最后一点,我做的是用位图获取imageview,并为其分配一个矩阵,然后按比例缩放矩阵

    Matrix m = new Matrix();
    m.postScale(scaleX,scaleY);
    
    这允许您获取图像样本,使其变小,然后放大,使其保持相同的大小。inSampleSize是scaleX和scaleY的大小,用于放大

    可能的问题:像素化。根据图像的大小,情况不会太糟,但您将看到其中的一些

    这是为了解决设备的约束。我会检查图像的宽度和高度有多大,如果它>GL_MAX_TEXTURE_SIZE,它会做一些数学运算,并在balue下生成

    我相信下一个标准是:

  • 利润


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

  • 它基于invidicual devices GL_MAX_TEXTURE_SIZE,根据:和jptsetung的回答以及相关评论,罗曼·盖伊对此给出了坚实的理解
  • 您需要了解您的设备可以处理什么样的排序数据
  • 执行以下代码时,使用2将使图像大小增加四分之一

    BitmapFactory.Options ops = new BitmapFactory.Options();
    opts.inSampleSize = 2;
    
    这种理解来自于这样一种观念,即它将是宽度和高度的一半,因此是大小的四分之一

  • 如果你不想像我一样硬编码。您可以使用GL_MAX_TEXTURE_SIZE来帮助确定它是什么
  • 最后一点,我做的是用位图获取imageview,并为其分配一个矩阵,然后按比例缩放矩阵

    Matrix m = new Matrix();
    m.postScale(scaleX,scaleY);
    
    这允许您获取图像样本,使其变小,然后放大,使其保持相同的大小。inSampleSize是scaleX和scaleY的大小,用于放大

    可能的问题:像素化。根据图像的大小,情况不会太糟,但您将看到其中的一些

    这是为了解决设备的约束。我会检查图像的宽度和高度有多大,如果它>GL_MAX_TEXTURE_SIZE,它会做一些数学运算,并在balue下生成

    我相信下一个标准是:

  • 利润