我想实现一个简单的全屏图库图像预览,其中包括通过捏合和拖动功能进行缩放。
基本内容很简单:framelayout中的imageview由setScaleX(/ Y)和setScrollX(/ Y)控制。
当我尝试加载大于OpenGL最大纹理大小(在我的情况下为4096x4096)的图像时,麻烦就开始了。我收到以下错误Bitmap too large to be uploaded into a texture
,这是有道理的。
其他图片浏览者如何打开并显示大图像?有诀窍还是魔法?
我正在考虑将一个大图像划分为一个裁剪图像网格(例如5x5)并将它们平铺,但它似乎是一个不那么健康的解决方案。可能是BitmapRegionDecoder的明智用法会是答案吗?
您能否建议如何解决此问题?
答案 0 :(得分:1)
我的图书馆SubsamplingScaleImageView专为图片库而设计,可显示其他大型图片,例如建筑图。它会自动平铺大于最大纹理大小的图像和子样本图像,以避免加载太多数据。试试示例应用,看看它是否能满足您的需求。
https://github.com/davemorrissey/subsampling-scale-image-view