Android 缩放图片的几种方式说明

1. BitmapFactory.Options
options.inSampleSize,它的取值应该是2的次方:1、2、4、8…
表示宽高都是原来的1/1, 1/2, 1/4, 1/8…
如果设置的值 < 1,那么效果就和 =1是一样的
再调用BitmapFactory的相关decode方法,传入options参数,即可得到一张缩小后的图片。
附上一段计算inSampleSize的方法:

static int calculateInSampleSize(BitmapFactory.Options options,
            int reqWidth, int reqHeight) {
        final int height = options.outHeight;
        final int width = options.outWidth;
        int inSampleSize = 1;
        if (height > reqHeight || width > reqWidth) {
            final int halfHeight = height / 2;
            final int halfWidth = width / 2;
            while ((halfHeight / inSampleSize) > reqHeight
                    && (halfWidth / inSampleSize) > reqWidth) {
                inSampleSize *= 2;
            }
        }
        return inSampleSize; 
}

2. Bitmap.createBitmap(Bitmap source, int x, int y, int width, int height, Matrix m, boolean filter)
以source的x,y为起点,宽w高h的范围,进行matrix变化。
这里只讨论缩放,那么matrix肯定是添加了scale操作。
要注意的是这里的参数x、y、width、height都是相对于source原图的。
如果x=y=0; w=source.getWidth()/2, h=source.getHeight()/2;scale=2;
那么最后的效果,只是取原图的左上四分之一的部份…并对这部份进行2倍放大


3. Bitmap.createScaledBitmap(bitmap, w, h, boolean filter);
以w,h为目标对bitmap进行缩放,filter表示是否要对位图进行过滤(滤波)处理
这个方法的效果就类似于ImageView.ScaleType.FIT_XY

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值