我想缩小 500x500px 资源以始终适合由屏幕宽度确定的特定尺寸。
目前我使用 Android 开发者网站 (高效加载大位图 http://developer.android.com/training/displaying-bitmaps/load-bitmap.html),但质量不如我在 a 中使用 500x500px 资源ImageView
(作为 xml 中的源)并缩放ImageView
而不是位图。
但它很慢,我想扩大规模Bitmap
也可以提高内存效率和速度。
编辑:我想要缩放的可绘制对象位于drawable
我的应用程序的文件夹。
Edit2:我目前的方法。
左图是来自的方法高效加载大位图 http://developer.android.com/training/displaying-bitmaps/load-bitmap.html无需任何修改。中心图像是使用@Salman Zaidi 提供的方法完成的,并进行了一些小小的修改:o.inPreferredConfig = Config.ARGB_8888;
and o2.inPreferredConfig = Config.ARGB_8888;
正确的图像是一个图像视图,其中图像源在 xml 中定义,并且质量是我希望通过缩放位图达到的质量。
private Bitmap decodeImage(File f) {
Bitmap b = null;
try {
BitmapFactory.Options o = new BitmapFactory.Options();
o.inJustDecodeBounds = true;
FileInputStream fis = new FileInputStream(f);
BitmapFactory.decodeStream(fis, null, o);
fis.close();
float sc = 0.0f;
int scale = 1;
//if image height is greater than width
if (o.outHeight > o.outWidth) {
sc = o.outHeight / 400;
scale = Math.round(sc);
}
//if image width is greater than height
else {
sc = o.outWidth / 400;
scale = Math.round(sc);
}
// Decode with inSampleSize
BitmapFactory.Options o2 = new BitmapFactory.Options();
o2.inSampleSize = scale;
fis = new FileInputStream(f);
b = BitmapFactory.decodeStream(fis, null, o2);
fis.close();
} catch (IOException e) {
}
return b;
}
这里“400”是新的宽度(如果图像处于纵向模式)或新的高度(如果图像处于横向模式)。您可以设置自己选择的值。缩放后的位图不会占用太多内存空间。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)