저는 Android SDK의 Finger Paint 데모와 비슷한 Canvas에서 그리는 응용 프로그램에서 작업하고 있습니다. 내 문제는 PorterDuff.Mode.CLEAR
을 사용할 때입니다. 드로잉과 캔버스를 사용할 때 뭔가 지우려고하면 잘 작동합니다. 그러나 내 이미지를 PNG
파일로 저장하려고하면 지우개의 선이 검은 색으로 표시되며 왜 이런 일이 발생하는지 잘 모르겠습니다. 여기에 내가 뭘하는지 예입니다Android Paint PorterDuff.Mode.CLEAR
@Override
protected void onDraw(Canvas canvas) {
canvas.drawColor(Color.WHITE);
canvas.drawBitmap(mBitmap, 0, 0, mBitmapPaint);
canvas.drawPath(mPath, mPaint);
}
지우개 :
case ERASE_MENU_ID:
mPaint.setXfermode(new PorterDuffXfermode(
PorterDuff.Mode.CLEAR));
return true;
내가 이미지를 저장하고있어 방법 : 여기
Calendar currentDate = Calendar.getInstance();
SimpleDateFormat formatter= new SimpleDateFormat("yyyyMMMddHmmss");
String dateNow = formatter.format(currentDate.getTime());
File dir = new File(mImagePath);
if(!dir.exists())
dir.mkdirs();
File file = new File(mImagePath + "/" + dateNow +".png");
FileOutputStream fos;
try {
fos = new FileOutputStream(file);
mBitmap.compress(Bitmap.CompressFormat.PNG, 100, fos);
fos.close();
Toast.makeText(getApplicationContext(), "File saved at \n"+mImagePath + "/" + dateNow +".png", Toast.LENGTH_LONG).show();
} catch (FileNotFoundException e) {
Log.e("Panel", "FileNotFoundException", e);
}
catch (IOException e) {
Log.e("Panel", "IOEception", e);
}
return true;
그리고 것은 이미지의 예입니다 :
내 캔버스가 저장되기 전에 보이는 모습입니다.
여기및 는 SD 카드에 저장 한 후 이미지를 경우 : fingerpaint 코드
사용 하시겠습니까? RGB_565 또는 RGBA_8888? – Renard
'Bitmap.Config.ARGB_8888' –
압축하기 전에 바로 mBitmap에 그릴 코드를 표시 할 수 있습니까? 또한 PortDuff clear은 결과 색상이 0 (검은 색)임을 의미합니다. 우연히 페인트의 알파를 0으로 설정 하시겠습니까? – Renard