Bitmap2

画布

public class MainActivity extends Activity {

 @Override

 protected void onCreate(Bundle savedInstanceState) {

  super.onCreate(savedInstanceState);

  setContentView(R.layout.activity_main);

  ImageView iv = (ImageView) this.findViewById(R.id.iv);

  // 获取一张背景图片

  Bitmap bitmap = BitmapFactory

    .decodeFile("mnt/sdcard/DCIM/Camera/IMG_20131121_162239.jpg");

  // 创建一张空白图片

  Bitmap blankBitmap = Bitmap.createBitmap(bitmap.getWidth(),

    bitmap.getHeight(), Bitmap.Config.RGB_565);

  // 创建一个画布

  Canvas canvas = new Canvas(blankBitmap);

  // 在画布上画上背景图

  canvas.drawBitmap(bitmap, new Matrix(), new Paint());

  // 创建一只画笔

  Paint paint = new Paint();

  paint.setTextSize(200);

  paint.setColor(Color.RED);

  // 在画布上添加文字

  canvas.drawText("伟哥威武!!", 260, 260, paint);

  iv.setImageBitmap(blankBitmap);

 }

}

图片画画板

public class MainActivity extends Activity {

 private ImageView iv;

 private Bitmap baseBitmap;

 private Canvas canvas;

 private Paint paint;

 @Override

 protected void onCreate(Bundle savedInstanceState) {

  super.onCreate(savedInstanceState);

  setContentView(R.layout.activity_main);

  this.iv = (ImageView) this.findViewById(R.id.iv);

  // 创建一张空白图片

  baseBitmap = Bitmap.createBitmap(480, 640, Bitmap.Config.ARGB_8888);

  // 创建一张画布

  canvas = new Canvas(baseBitmap);

  // 画布背景为灰色

  canvas.drawColor(Color.GRAY);

  // 创建画笔

  paint = new Paint();

  // 画笔颜色为红色

  paint.setColor(Color.RED);

  // 宽度5个像素

  paint.setStrokeWidth(5);

  iv.setOnTouchListener(new OnTouchListener() {

   int startX;

   int startY;

   @Override

   public boolean onTouch(View v, MotionEvent event) {

    switch (event.getAction()) {

    case MotionEvent.ACTION_DOWN:

     // 获取手按下时的坐标

     startX = (int) event.getX();

     startY = (int) event.getY();

     break;

    case MotionEvent.ACTION_MOVE:

     // 获取手移动后的坐标

     int stopX = (int) event.getX();

     int stopY = (int) event.getY();

     // 在开始和结束坐标间画一条线

     canvas.drawLine(startX, startY, stopX, stopY, paint);

     // 实时更新开始坐标

     startX = (int) event.getX();

     startY = (int) event.getY();

     iv.setImageBitmap(baseBitmap);

     break;

    }

    return true;

   }

  });

 }

 public void save(View view) {

  try {

   File file = new File(Environment.getExternalStorageDirectory(),

     System.currentTimeMillis() + ".jpg");

   OutputStream stream = new FileOutputStream(file);

   baseBitmap.compress(CompressFormat.JPEG, 100, stream);

   stream.close();

   // 模拟一个广播,通知系统sdcard被挂载

   Intent intent = new Intent();

   intent.setAction(Intent.ACTION_MEDIA_MOUNTED);

   intent.setData(Uri.fromFile(Environment

     .getExternalStorageDirectory()));

   sendBroadcast(intent);

   Toast.makeText(this, "保存图片成功", 0).show();

  } catch (Exception e) {

   Toast.makeText(this, "保存图片失败", 0).show();

   e.printStackTrace();

  }

 }

}

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

扒掉人物衣服

public class MainActivity extends Activity {

 private ImageView iv_after;

 private ImageView iv_before;

 private Bitmap beforeBitmap;

 private Canvas canvas;

 @Override

 protected void onCreate(Bundle savedInstanceState) {

  super.onCreate(savedInstanceState);

  setContentView(R.layout.activity_main);

  this.iv_after = (ImageView) this.findViewById(R.id.after);

  this.iv_before = (ImageView) this.findViewById(R.id.before);

  // decodeResource()创建出来的图片属性为只读

  Bitmap after = BitmapFactory.decodeResource(getResources(),

    R.drawable.after);

  Bitmap before = BitmapFactory.decodeResource(getResources(),

    R.drawable.before);

  // 创建一张可编辑的空白图片

  this.beforeBitmap = Bitmap.createBitmap(before.getWidth(),

    before.getHeight(), before.getConfig());

  this.canvas = new Canvas(beforeBitmap);

  this.canvas.drawBitmap(before, new Matrix(), new Paint());

  this.iv_after.setImageBitmap(after);

  this.iv_before.setImageBitmap(beforeBitmap);

  this.iv_before.setOnTouchListener(new OnTouchListener() {

   @Override

   public boolean onTouch(View v, MotionEvent event) {

    switch (event.getAction()) {

    case MotionEvent.ACTION_MOVE:

     int x = (int) event.getX();

     int y = (int) event.getY();

     for (int i = -18; i <= 18; i++) {

      for (int j = -18; j <= 18; j++) {

       if (x + i >= 0 && y + j >= 0

         && x + i < beforeBitmap.getWidth()

         && y + j < beforeBitmap.getHeight()) {

        beforeBitmap.setPixel(x + i, y + j,

          Color.TRANSPARENT);

       }

      }

     }

     iv_before.setImageBitmap(beforeBitmap);

     break;

    }

    return true;

   }

  });

 }

}

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:tools="http://schemas.android.com/tools"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    tools:context=".MainActivity" >

    <ImageView

        android:id="@+id/after"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        />

    <ImageView

        android:id="@+id/before"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        />

</FrameLayout>

原文地址:https://www.cnblogs.com/freenovo/p/4469817.html