什么叫创建图片的副本? 因为我们直接从BitmapFactory取出来的图片是可读的,是不可以修改的。 假设用户想修改这张图片,一般是先根据原图在内存中创建和原图一模一样大小的图片,然后在上面修改,用户感觉好像是在原图上修改了,其实不然。
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//1: 先需要获取到原图片. 注意:我们获得的图片是只读的,是不能写的,如果想修改图片,就得创建图片的copy
Bitmap bmsRc = BitmapFactory.decodeResource(getResources(), R.drawable.abc);
//2:创建图片的copy,可以在内存中创建一个和原图一模一样大小的bitmap
Bitmap bmCopy = Bitmap.createBitmap(bmsRc.getWidth(), bmsRc.getHeight(), bmsRc.getConfig());
//2.1 创建一个画笔
Paint paint = new Paint();
//2.2 创建画板对象
Canvas canvas = new Canvas(bmCopy);
//2.3 开始绘制和原图一模一样
canvas.drawBitmap(bmsRc, new Matrix(), paint);
//在图片上绘制一条直线,代表图片的副本是可以修改的
canvas.drawLine(30, 30, 400, 400, paint);
ImageView iv_src = (ImageView) findViewById(R.id.lv1);
ImageView iv_copy = (ImageView) findViewById(R.id.lv2);
//显示
iv_src.setImageBitmap(bmsRc);
iv_copy.setImageBitmap(bmCopy);
}
}
其实创建图片的副本很简单,就如上代码描述一样
效果图如下:
可以明显的看见,第二张图片是可以修改的。