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");
? // 創(chuàng)建一張空白圖片
? Bitmap blankBitmap = Bitmap.createBitmap(bitmap.getWidth(),
? ? bitmap.getHeight(), Bitmap.Config.RGB_565);
? // 創(chuàng)建一個畫布
? Canvas canvas = new Canvas(blankBitmap);
? // 在畫布上畫上背景圖
? canvas.drawBitmap(bitmap, new Matrix(), new Paint());
? // 創(chuàng)建一只畫筆
? 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);
? // 創(chuàng)建一張空白圖片
? baseBitmap = Bitmap.createBitmap(480, 640, Bitmap.Config.ARGB_8888);
? // 創(chuàng)建一張畫布
? canvas = new Canvas(baseBitmap);
? // 畫布背景為灰色
? canvas.drawColor(Color.GRAY);
? // 創(chuàng)建畫筆
? 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:
? ? ?// 獲取手按下時的坐標(biāo)
? ? ?startX = (int) event.getX();
? ? ?startY = (int) event.getY();
? ? ?break;
? ? case MotionEvent.ACTION_MOVE:
? ? ?// 獲取手移動后的坐標(biāo)
? ? ?int stopX = (int) event.getX();
? ? ?int stopY = (int) event.getY();
? ? ?// 在開始和結(jié)束坐標(biāo)間畫一條線
? ? ?canvas.drawLine(startX, startY, stopX, stopY, paint);
? ? ?// 實時更新開始坐標(biāo)
? ? ?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();
? ?// 模擬一個廣播,通知系統(tǒng)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()創(chuàng)建出來的圖片屬性為只讀
? Bitmap after = BitmapFactory.decodeResource(getResources(),
? ? R.drawable.after);
? Bitmap before = BitmapFactory.decodeResource(getResources(),
? ? R.drawable.before);
?
? // 創(chuàng)建一張可編輯的空白圖片
? 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>
?
轉(zhuǎn)載于:https://www.cnblogs.com/freenovo/archive/2013/03/28/4469817.html
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
- 上一篇: Windows 下 Char 和Wcha
- 下一篇: 日志系统