图像太大而无法显示

时间:2016-03-09 17:45:13

标签: android image

我正在构建一个应用程序来加载图库中的图像,到目前为止它对某些图像效果很好,但有些图像我不断收到消息“位图太大而无法上传到纹理中(2988x5312,max = 4096x4096)”

这是显示位图的代码。

 @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if (requestCode == PICK_IMAGE_REQUEST && resultCode == RESULT_OK && data != null && data.getData() != null)
        {
            Uri filePath = data.getData();
            try {
                bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), filePath);
                Picasso.with(MainActivity.this).load(filePath).error(R.drawable.smile).into(imageView1);
            } catch (IOException e)
            {
                e.printStackTrace();
            }
        }
    }

我该怎么做才能解决这个问题?调整图像大小?或检查图像是否太大?这里的图像分辨率是多少?

2 个答案:

答案 0 :(得分:3)

你回答了自己,是的,你必须扩大你的形象,毕加索很容易,无论如何检查this issue以及检查如何获得设备支持的最大纹理尺寸的答案。

检查this link以了解如何使用毕加索重新取样图像。

答案 1 :(得分:1)

Picasso具有足够好的缓存管理功能。 你可以调整图像大小,

 Picasso
.with(context)
.load(YOUR IMAGE PATH])
.resize(1920, 1080) // your desire ratio
.onlyScaleDown() // the image will only be resized if it's bigger than 6000x2000 pixels.
.into(imageView);

或者您可以缩小图像。

Select tblA.*
FROM tblA
INNER JOIN 
  (select A,B
  from tblA
  Group By A,B
  HAVING
  SUM(case when C<0 then 1 else 2 end) >=3
)X 
on X.A=tblA.A and X.B=tblA.B