合并俩张图片

来源:互联网 发布:淘宝商家开通花呗要求 编辑:程序博客网 时间:2024/04/28 02:12
importandroid.app.Activity;
importandroid.graphics.Bitmap;
importandroid.graphics.Canvas;
importandroid.graphics.Rect;
importandroid.graphics.drawable.BitmapDrawable;
importandroid.os.Bundle;
importandroid.os.Handler;
importandroid.os.Handler.Callback;
importandroid.os.Message;
importandroid.view.View;
importandroid.view.View.OnClickListener;
importandroid.widget.Button;
importandroid.widget.ImageView;
 
publicclass MainActivity extendsActivity {
 
    privateImageView ivBmp1;
    privateImageView ivBmp2;
    privateImageView ivBmpMerge;
    privateButton mergeBtn;
 
    @Override
    protectedvoid onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        initUi();
    }
 
    privatevoid initUi() {
        ivBmp1 = (ImageView) findViewById(R.id.iv_bmp1);
        ivBmp2 = (ImageView) findViewById(R.id.iv_bmp2);
        ivBmpMerge = (ImageView) findViewById(R.id.iv_bmp_merge);
        mergeBtn = (Button) findViewById(R.id.btn_merge);
        mergeBtn.setOnClickListener(newOnClickListener() {
 
            @Override
            publicvoid onClick(View v) {
                showMergeBitmap();
            }
        });
 
    }
 
    privateHandler handler = newHandler(newCallback() {
 
        @Override
        publicboolean handleMessage(Message msg) {
            Bitmap bitmap = (Bitmap) msg.obj;
            ivBmpMerge.setImageBitmap(bitmap);
            returnfalse;
        }
    });
 
    /**
     * 显示合并的图
     */
    protectedvoid showMergeBitmap() {
        newThread(newRunnable() {
 
            @Override
            publicvoid run() {
                Bitmap bitmap = mergeBitmap();
                Message messge = handler.obtainMessage();
                messge.obj = bitmap;
                handler.sendMessage(messge);
            }
        }).start();
    }
 
    /*
     * 使用Canvas合并Bitmap
     */
    privateBitmap mergeBitmap() {
        // 获取ImageView上得Bitmap图片
        Bitmap bmp1 = ((BitmapDrawable) ivBmp1.getDrawable()).getBitmap();
        Bitmap bmp2 = ((BitmapDrawable) ivBmp2.getDrawable()).getBitmap();
 
        // 创建空得背景bitmap
        // 生成画布图像
        Bitmap resultBitmap = Bitmap.createBitmap(ivBmpMerge.getWidth(),
                ivBmpMerge.getHeight(), Bitmap.Config.RGB_565);
        Canvas canvas = newCanvas(resultBitmap);// 使用空白图片生成canvas
 
        // 将bmp1绘制在画布上
        Rect srcRect = newRect(0,0, bmp1.getWidth(), bmp1.getHeight());// 截取bmp1中的矩形区域
        Rect dstRect = newRect(0,0, ivBmpMerge.getWidth() / 2,
                ivBmpMerge.getHeight());// bmp1在目标画布中的位置
        canvas.drawBitmap(bmp1, srcRect, dstRect, null);
 
        // 将bmp2绘制在画布上
        srcRect = newRect(0,0, bmp2.getWidth(), bmp2.getHeight());// 截取bmp1中的矩形区域
        dstRect = newRect(ivBmpMerge.getWidth() / 2,0, ivBmpMerge.getWidth(),
                ivBmpMerge.getHeight());// bmp2在目标画布中的位置
        canvas.drawBitmap(bmp2, srcRect, dstRect, null);
        // 将bmp1,bmp2合并显示
        returnresultBitmap;
    }
 
}



运行效果


这里写图片描述
原创粉丝点击