首页 > 代码库 > 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位图相关解码操作