什么叫创建图片的副本? 因为我们直接从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); } }其实创建图片的副本很简单,就如上代码描述一样
效果图如下:
可以明显的看见,第二张图片是可以修改的。
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/longwang155069/article/details/47155737