我正在构建一个应用程序来加载图库中的图像,到目前为止它对某些图像效果很好,但有些图像我不断收到消息“位图太大而无法上传到纹理中(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();
}
}
}
我该怎么做才能解决这个问题?调整图像大小?或检查图像是否太大?这里的图像分辨率是多少?
答案 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