将图像缩放到不同的图像视图大小

时间:2014-02-08 21:15:01

标签: android

我正在我的视图中存储和显示使用相机应用拍摄的图像。这些图像以不同视图显示在不同大小的imageView中

例如,在一个页面中,我有1/6屏幕尺寸显示,在另一个页面中有缩略图显示,在另一个页面中有一个全屏幕显示。我该如何处理缩放?

起初我正在使用位图,使用bp.compress压缩(Bitmap.CompressFormat.JPEG,100,bytes);并在图像视图中进行设置。这对于全屏显示来说并不是很好,它只适合缩略图显示。

随着这个我在一些视图中显示一些来自drawable文件夹的图像,它们在不同的屏幕中看起来非常不同(例如模拟器和三星Galaxy手机)

我已经看到有关这些问题的各种帖子,例如使用自定义类扩展imageview etcetc。最佳路线是什么?感谢您提出任何建议

1 个答案:

答案 0 :(得分:2)

这取决于您正在寻找的预期结果。对于较小的缩略图视图,您可以尝试应用中心裁剪,对于您要查找的较大视图,您可能希望图像与屏幕允许的一样大,同时保留纵横比。

为了让生活更简单,为什么不使用Square的Picasso图书馆?它可以处理大量您所要求的内容,并且是JAR形式的免费库。其中一个主要好处是简单的语法,它从文件系统和可绘制文件夹中获取图像。

它包含一些转换,您也可以自己创建一些转换,如果Square无法提供您需要的转换,则可以提供一些额外的功能。

最后它处理图像的缓存,从我记忆中它保留了内存中的缩放缓存图像,而不是需要更多的巨大图像。

编码示例

Picasso.with(context).load(R.drawable.landing_screen).into(imageView1);
Picasso.with(context).load(new File(...)).into(imageView2);

对于缩略图,这样的东西可能有用

Picasso.with(context)
  .load(url)
  .resize(50, 50)
  .centerCrop()
  .into(imageView)

http://square.github.io/picasso/