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

/**
*获取尺寸为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);
    }


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值