使用BitmapFactory的decodeFile()方法获取的Bitmap对象是只读的,无法进行编辑操作
需要进行编辑的话,需要获取到该对象的一个副本
代码如下:
1 import android.app.Activity; 2 import android.graphics.Bitmap; 3 import android.graphics.BitmapFactory; 4 import android.graphics.Canvas; 5 import android.graphics.Matrix; 6 import android.graphics.Paint; 7 import android.os.Bundle; 8 import android.widget.ImageView; 9 10 public class MainActivity extends Activity {11 12 @Override13 protected void onCreate(Bundle savedInstanceState) {14 super.onCreate(savedInstanceState);15 setContentView(R.layout.activity_main);16 17 Bitmap bmSrc = BitmapFactory.decodeFile("sdcard/img15.jpg");18 // 生产一份与原图宽高和配置一模一样的白纸19 Bitmap bmCopy = Bitmap.createBitmap(bmSrc.getWidth(),20 bmSrc.getHeight(), bmSrc.getConfig());21 // 设置画笔22 Paint paint = new Paint();23 // 打开画板,并把白纸铺在画板上24 Canvas canvas = new Canvas(bmCopy);25 // 把原图绘画到副本上26 canvas.drawBitmap(bmSrc, new Matrix(), paint);27 // 设置显示原图和副本28 ImageView iv_src = (ImageView) findViewById(R.id.iv_src);29 ImageView iv_copy = (ImageView) findViewById(R.id.iv_copy);30 iv_src.setImageBitmap(bmSrc);31 iv_copy.setImageBitmap(bmCopy);32 }33 34 }