Android 如何在sd卡中保存画布覆盖位图?
我正在制作一个应用程序,其中我正在画布上绘制一个位图作为覆盖,在擦除覆盖位图的某些部分后,我想将其保存到sd卡中,但保存时它包含黑色 类用户界面附加屏幕 我的代码如下:-Android 如何在sd卡中保存画布覆盖位图?,android,Android,我正在制作一个应用程序,其中我正在画布上绘制一个位图作为覆盖,在擦除覆盖位图的某些部分后,我想将其保存到sd卡中,但保存时它包含黑色 类用户界面附加屏幕 我的代码如下:- public EraserView(Context context) { super(context); setFocusable(true); setBackgroundResource(R.drawable.back); // setting paint mPaint = new P
public EraserView(Context context) {
super(context);
setFocusable(true);
setBackgroundResource(R.drawable.back);
// setting paint
mPaint = new Paint();
mPaint.setAlpha(0);
mPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_IN));
mPaint.setColor(Color.TRANSPARENT);
mPaint.setAntiAlias(true);
Resources r = this.getContext().getResources();
Bitmap bm = BitmapFactory.decodeResource(getResources(),
R.drawable.image2);
bitmap = bm.createBitmap(295, 260, Config.ARGB_8888);
pcanvas = new Canvas();
pcanvas.setBitmap(bitmap); // drawXY will result on that Bitmap
pcanvas.drawBitmap(bm, 0, 0, null);
}
@Override
protected void onDraw(Canvas canvas) {
pcanvas.drawCircle(x, y, r, mPaint);
canvas.drawBitmap(bitmap, 0, 0, null);
setBitmap(bitmap);
super.onDraw(canvas);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
switch(event.getAction())
{
case MotionEvent.ACTION_DOWN:
x = (int) event.getX();
y = (int) event.getY();
r = 2;
invalidate();
break;
case MotionEvent.ACTION_UP:
x = (int) event.getX();
y = (int) event.getY();
r = 20;
invalidate();
break;
case MotionEvent.ACTION_MOVE:
x = (int) event.getX();
y = (int) event.getY();
r =2;
invalidate();
break;
case MotionEvent.ACTION_POINTER_UP:
x = (int) event.getX();
y = (int) event.getY();
r = 2;
// Atlast invalidate canvas
invalidate();
break;
}
return true;
}
public void setBitmap(Bitmap bitmap) {
this.bitmap = bitmap;
}
public Bitmap getBitmap() {
return bitmap;
}
但我的要求是只保存覆盖,谢谢。当CompressFormat为JPEG时,它会显示黑色背景,因为只需将CompressFormat更改为PNG,甚至可以将图像保存为PNG格式而不是JPEG。检查以下代码:
ByteArrayOutputStream objbytes = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, objbytes);
在删除图像的路径时,请使用.png扩展名
目录+“/pics+”+System.currentTimeMillis()+“.png”
也许你们并没有得到问题,我需要的是如何保存只覆盖位图,目前位图保存正确,但与黑色背景,所以请帮助有关…你们想保存黑色部分。还是狗?你能澄清一下你的照片中的前景和背景是什么吗?@Rvdk我只想保存狗的部分