ImageLoader加载完成后,对图片进行处理(仿微信发送图片的效果)

最近做了个留言板的功能,可以发送视频,图片,文字,表情,画板和语音;其中图片和视频的效果要跟微信中的效果一样。不知道其他人是怎么做的,我是在图片加载成功后又对图片做了处理,加了个遮罩效果;

adapter中的代码:

ImageLoader.getInstance().displayImage(picPath,holder.image,options,new SimpleImageLoadingListener(){
   @Override
   public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage){
      finalHolder.image.setImageBitmap(MsgUtil.addBigFrame(loadedImage,R.drawable.message_bg,0,displaySize));
   }
});

MsgUtil.java中的代码;

private static final String TAG = "MsgUtil";
    //给图片添加蒙版
    public static Bitmap addBigFrame(Bitmap bm,int res,int videoPic,int[] display){
        //Bitmap frameBitmap = BitmapFactory.decodeResource(getResources(),res);
        Bitmap frameBitmap = readBitMap(res);
        Drawable[] array = new Drawable[2];

//        float scale;
//        if(bm.getWidth()>=bm.getHeight()){
//            scale = display[0]/(float)bm.getWidth();
//        }else{
//            scale = display[1]/(float)bm.getHeight();
//        }
//
//        Matrix matrix = new Matrix();
//        matrix.setScale(scale, scale);
//
//        bm = Bitmap.createBitmap(bm,0,0,bm.getWidth(),bm.getHeight(),matrix,true);
//        if(videoPic == 1){
//            frameBitmap = Bitmap.createScaledBitmap(frameBitmap,bm.getWidth()*3,bm.getHeight()*3,false);
//        }else{
	//用原来图片的大小创建遮罩图
            frameBitmap = Bitmap.createScaledBitmap(frameBitmap,bm.getWidth(),bm.getHeight(),false);
//        }

        LogUtil.d(TAG,"frameBitmap.getWidth()="+frameBitmap.getWidth()+",frameBitmap.getHeight()="+frameBitmap.getHeight());
        array[0] = new BitmapDrawable(bm);
        array[1] = new BitmapDrawable(frameBitmap);
        LayerDrawable layerDrawable = new LayerDrawable(array);
        layerDrawable.setLayerInset(0, 0, 0, 0, 0);

        // layerDrawable.setBounds();
        return drawableToBitmap(layerDrawable);
    }

    //将Drawable转换成Bitmap
    public static Bitmap drawableToBitmap(Drawable drawable){
//        Bitmap bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(),
//                drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888 : Bitmap.Config.RGB_565);
        Bitmap bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(),
                Bitmap.Config.RGB_565);
        Canvas canvas = new Canvas(bitmap);
        drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
        drawable.draw(canvas);
        return bitmap;
    }

    //以最省内在的方式创建Bitmap
    public static Bitmap readBitMap(int resId){
        BitmapFactory.Options options = new BitmapFactory.Options();
        options.inPreferredConfig = Bitmap.Config.RGB_565;
        options.inPurgeable=true;
        options.inInputShareable = true;

        InputStream is = HaierApp.getContext().getResources().openRawResource(resId);
//        InputStream is = getImg(Environment.getExternalStorageDirectory()+"/download_test/downloadtest.jpg");

        return BitmapFactory.decodeStream(is,null,options);
    }
下面是用来遮罩的图片

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值