在某些设备上,位图形式的图像对于要容纳它们的 ImageView 来说似乎太大了。
图像将通过相机和网络获取。它们将在允许您移动图像、缩放等以查看缺陷的活动中一次显示 1 个。
似乎在使用来自相机的图像时,我们得到“位图太大而无法上传到纹理中”。
我不想硬编码比例,但我想拍摄任何图像,并通过位图工厂,生成适合 Imageview 的图像。然后我会拍摄该图像,因为它不是太大,并通过将矩阵与 ImageView 相关联来捏缩放它。
我正在查看 stackoverflow 以了解如何解决此问题。我得出以下结论:
当您执行以下代码时,使用 2 将缩小图像大小的四分之一。
BitmapFactory.Options ops = new BitmapFactory.Options();
opts.inSampleSize = 2;
这种理解来自这样一个概念,即它将宽度和高度减半,因此尺寸减半。
最后一点,我所做的是我使用位图获取图像视图,并为其分配一个 MATRIX,然后将矩阵缩放
Matrix m = new Matrix();
m.postScale(scaleX,scaleY);
这使您可以获取图像样本以使其更小,然后将其放大以保持相同的大小。inSampleSize 是 scaleX 和 scaleY 的大小,以使其按比例放大。
可能的问题:像素化。根据图像的大小,它不会太糟糕,但你会看到一些。
这是为了解决设备的限制。我会检查图像的宽度和高度有多大,如果它 > GL_MAX_TEXTURE_SIZE,它会做一些数学运算并使其低于 balue。
我相信下一个标准的事情是:
...
利润!