#在内存中创建图片的副本(掌握)
直接加载的bitmap对象是只读的,无法修改,要修改图片只能在内存中创建出一个一模一样的bitmap副本,然后修改副本
//第一步:加载原图
Bitmap srcBm = BitmapFactory.decodeFile("sdcard/photo3.jpg");
iv_src.setImageBitmap(srcBm);
/ /第二步:/创建与原图大小一致的空白bitmap
Bitmap copyBm = Bitmap.createBitmap(srcBm.getWidth(), srcBm.getHeight(), srcBm.getConfig());
//第三步:定义画笔
Paint paint = new Paint();
//第四步:把纸铺在画版上
Canvas canvas = new Canvas(copyBm);
//第五步:把srcBm的内容绘制在copyBm上
canvas.drawBitmap(srcBm, new Matrix(), paint);
iv_copy.setImageBitmap(copyBm);
部分代码如下:
//加载原图 Bitmap bmSrc = BitmapFactory.decodeResource(getResources(), R.drawable.photo3); //创建副本 //1.创建与原图一模一样大小的bitmap对象,该对象中目前是没有内容的,可以比喻为创建了和原图一样大小的白纸 Bitmap bmCopy = Bitmap.createBitmap(bmSrc.getWidth(), bmSrc.getHeight(), bmSrc.getConfig()); //2.创建画笔对象 Paint paint = new Paint(); //3.创建画板,把白纸铺到画板上 Canvas canvas = new Canvas(bmCopy); //4.开始作画 canvas.drawBitmap(bmSrc, new Matrix(), paint); ImageView iv_src = (ImageView) findViewById(R.id.iv_src); iv_src.setImageBitmap(bmSrc); ImageView iv_copy = (ImageView) findViewById(R.id.iv_copy); iv_copy.setImageBitmap(bmCopy);