您的位置:首页 > 移动开发 > Android开发

android Bitmap处理以 节省内存的方法

2012-11-14 15:10 267 查看
/**
*获取尺寸为maxWidth*maxHeight大小的图片 maxWidth maxHeight单位为像素px
*android布局文件一般都是用与像素无关的dp为单位
*可以使用 dip2px 方法转dp为dx
*/
public static Bitmap change_image(String ipath, int maxWidth,
int maxHeight) {
BitmapFactory.Options opts1 = new Options();
opts1.inJustDecodeBounds = true;
BitmapFactory.decodeFile(Uri.parse(ipath).toString(), opts1);

int size = computeSampleSize(opts1, -1, maxWidth,
maxHeight);
BitmapFactory.Options opts = new Options();
opts.inSampleSize = size;
System.out.println("ld opts.inSampleSize=" + opts.inSampleSize);
opts.inJustDecodeBounds = false;

Bitmap btm = BitmapFactory
.decodeFile(Uri.parse(ipath).toString(), opts);
return btm;
}
/**
* 将图片裁剪到合适大小
*/
public static int computeSampleSize(BitmapFactory.Options options,
int minSideLength, int maxWidth, int maxHeight) {
int pW = options.outWidth;
int pH = options.outHeight;
if (pW <= maxWidth && pH <= maxHeight)
{
return 1;
}
int roundedSize = pW / maxWidth;
if (pW % maxWidth != 0) {
roundedSize += 1;
}
int r1 = pH / maxHeight;
if (pH % maxHeight != 0) {
r1 += 1;
}
roundedSize = Math.max(r1, roundedSize);
return roundedSize;
}

/**
* 根据手机的分辨率从 dp 的单位 转成为 px(像素)
*/
public static int dip2px(Context context, float dpValue) {
final float scale = context.getResources().getDisplayMetrics().density;
return (int) (dpValue * scale + 0.5f);
}

/**
* 根据手机的分辨率从 px(像素) 的单位 转成为 dp
*/
public static int px2dip(Context context, float pxValue) {
final float scale = context.getResources().getDisplayMetrics().density;
return (int) (pxValue / scale + 0.5f);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: