首页 > 代码库 > Android位图相关解码操作
Android位图相关解码操作
public class BitMapTools {
?
????/**
???? * 对图片进行解码操作
???? *
???? * @param resource
???? * 资源文件
???? * @param resId
???? * 解码位图的iD
???? * @param reqWidt
???? * 指定输出位图的宽度
???? * @param reqHight
???? * 制定输出位图的高度
???? * @return
???? */
????public static Bitmap decodeBitmap(Resources resource, int resId,
????????????int reqWidth, int reqHight) {
????????// 对位图进行解码的参数设置
????????BitmapFactory.Options option = new BitmapFactory.Options();
????????// 在对位图进行解码的过程中,避免申请内存
????????option.inJustDecodeBounds = true;
????????BitmapFactory.decodeResource(resource, resId, option);
????????//对图片进行压缩
????????option.inSampleSize = calculateInSimpleSize(option, reqWidth, reqHight);
????????option.inJustDecodeBounds = false;
????????return BitmapFactory.decodeResource(resource, resId, option);
????}
?
????/**
???? * 计算相关压缩比例
???? * @param option
???? * @param reqWidth
???? * @param reqHight
???? * @return
???? */
????public static int calculateInSimpleSize(BitmapFactory.Options option,
????????????int reqWidth, int reqHight) {
????????// 获取图片的原始宽高
????????int imageHight = option.outHeight;
????????int imageWidht = option.outWidth;
?
????????// 压缩比例
????????int inSimpleSize = 1;
????????if (imageHight > reqHight || imageWidht > reqWidth) {
????????????final int heightRatio = Math.round(1.0f * imageHight / reqHight);
????????????final int widthRatio = Math.round(1.0f * imageWidht / reqWidth);
????????????inSimpleSize = heightRatio < widthRatio ? heightRatio : widthRatio;
????????}
????????return inSimpleSize;
????}
}
Android位图相关解码操作