为没有预调整大小的图像视图加载大图像(如图库)

时间:2014-11-05 15:54:40

标签: android opengl-es imageview gallery large-data

我想实现一个简单的全屏图库图像预览,其中包括通过捏合和拖动功能进行缩放。

基本内容很简单:framelayout中的imageview由setScaleX(/ Y)和setScrollX(/ Y)控制。

当我尝试加载大于OpenGL最大纹理大小(在我的情况下为4096x4096)的图像时,麻烦就开始了。我收到以下错误Bitmap too large to be uploaded into a texture,这是有道理的。

其他图片浏览者如何打开并显示大图像?有诀窍还是魔法?

我正在考虑将一个大图像划分为一个裁剪图像网格(例如5x5)并将它们平铺,但它似乎是一个不那么健康的解决方案。可能是BitmapRegionDecoder的明智用法会是答案吗?

您能否建议如何解决此问题?

1 个答案:

答案 0 :(得分:1)

我的图书馆SubsamplingScaleImageView专为图片库而设计,可显示其他大型图片,例如建筑图。它会自动平铺大于最大纹理大小的图像和子样本图像,以避免加载太多数据。试试示例应用,看看它是否能满足您的需求。

https://github.com/davemorrissey/subsampling-scale-image-view