Estoy trabajando en la aplicación que está dibujando en Canvas similar a la demostración de Finger Paint de Android SDK. Mi problema es cuando estoy usando PorterDuff.Mode.CLEAR
. Cuando dibujo y lienzo, y si intento borrar algo, funciona bien. Pero si intento guardar mi imagen como archivo PNG
, los trazos del borrador son de color negro, y no estoy seguro de por qué sucede esto. Este es un ejemplo de lo que estoy haciendo: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);
}
borrador:
case ERASE_MENU_ID:
mPaint.setXfermode(new PorterDuffXfermode(
PorterDuff.Mode.CLEAR));
return true;
Y cómo estoy guardar la imagen:
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;
Y aquí es un ejemplo de las imágenes:
aquí es cómo se ve mi lienzo antes de guardar:
y aquí está la imagen después de guardar en la tarjeta SD:
cuál es el Bitmap.Config que son ¿utilizando? RGB_565 o RGBA_8888? – Renard
'Bitmap.Config.ARGB_8888' –
¿Puedes mostrar el código donde dibujas en mBitmap justo antes de comprimirlo? También PortDuff clear significa que el color del resultado es 0 (negro). ¿Estás por casualidad poniendo el alfa de la pintura a cero? – Renard