【发布时间】:2014-04-03 05:04:21
【问题描述】:
在我的应用程序中,我有一个与图库类似的功能,但遇到了需要缩放图像的问题。我在 Nexus 5 中的测试设备,屏幕宽度为 1080p (360dp)。下面是使用我的应用和系统默认图库打开的宽度为 604 像素的图像的屏幕截图:
我的应用:
==============================
画廊:
我用来显示图像的代码非常简单:
pathToImage = getIntent().getStringExtra("path");
img = (ImageView) findViewById(R.id.imgPictureView);
try {
bmpImage = BitmapFactory.decodeFile(pathToImage);
img.setImageBitmap(bmpImage);
} catch (Exception e) {
e.printStackTrace();
}
打开高分辨率相机照片会导致我的 ImageView 调整其宽度以填充屏幕,但是我得到的堆大小约为 80 (!!) MB。
很明显,系统库决定是否向上/向下缩放Bitmap 以使其适合屏幕。例如,它将 60 像素的图像放大,但只是放大了一个很小的比例,因此它不会变得非常模糊。我想它还会缩小大型相机图片以防止OutOfMemoryError's。所以在我上面的例子中,画廊假设 604px 的宽度足以将其放大到 1080 像素而没有明显的质量损失,我的应用程序当然不是因为缺少任何额外的代码。
所以问题是:我怎样才能达到相同的结果,并根据当前屏幕确定放大/缩小图像而不损失质量的因素?
注意:对于那些现在将发布大量(超出争议的惊人)代码示例来展示如何实际缩放 Bitmap 或确定屏幕宽度的人 - 这不是我的问题。 p>
【问题讨论】:
标签: android image-scaling android-bitmap