Android的双指缩放大的图像,存储效率而不会丢失细节(Android pinch zoom la

2019-08-17 06:57发布

我的应用程序能够显示一些高分辨率的图像(约1900 * 2200像素),支持双指缩放的。 为了避免内存不足错误我打算解码图像通过显示全屏

options.inSampleSize = scale (scale was calculated as Power of 2 as Document)

(我的观点我用是TouchImageView延伸ImageView

这样我就可以快速加载图像和屏幕(图像)之间平滑滑动。 然而,当我捏缩放,我的应用程序将由于缩放图像的细节。 如果我加载完整的图像,我不能快速加载或顺利刷卡,双指缩放后的阻力。 然后,我尝试当用户开始捏缩放只加载完整的图像,但我仍然无法顺利拖,因为非常大的图像的图像。 Android的画廊可以做到完美,甚至8Mpx图像。

任何人都可以帮助我。 提前致谢

Answer 1:

对于区域对不起,回答一个老问题,但我刚刚完成的图像视图,显示资产或子采样外部存储,并加载从图像分辨率更高瓷砖的图像,你捏来放大作为高分辨率图像数据的未加载屏幕应该避免内存不足异常。

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



Answer 2:

我知道这个问题很久以前有人问,但这个答案可以帮助其他人为此而努力。 我有完全一样的问题。 你应该考虑使用WebView ,并用它加载图像,即使它是一个局部图像。 例如加载的资产的图像使用以下命令:

// Get a WebView you have defined in your XML layout    
WebView webView = (WebView) findViewById(R.id.webView1);  
// Fetch the picture in your folders using HTML             
String htmlData = "<img src=\"my_image.png\">";
webView.loadDataWithBaseURL("file:///android_asset/", htmlData, "text/html", "utf-8", null);
// Activate zooming
webView.getSettings().setBuiltInZoomControls(true);

我承认,这是很奇怪的使用WebView对于这样的任务,这是我发现的唯一的解决方案。 至少,你永远不会得到一个OOM异常。



文章来源: Android pinch zoom large image, memory efficient without losing detail