У меня есть объект Bitmap, который используется для рисования, и я хочу сохранить изображение с него на SDCARD, используя формат JPEG. У меня есть следующий код:
public void saveBitmap() throws IOException {
String path=Environment.getExternalStorageDirectory().getAbsolutePath()+"/output.jpg";
File output=new File(path);
BufferedOutputStream ous = null;
try {
ous=new BufferedOutputStream(new FileOutputStream(output));
mBitmap.compress(CompressFormat.JPEG, 100, ous);
ous.flush();
ous.close();
} finally {
if (ous!=null) {
try {
ous.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
Log.e("closing", e.getMessage());
}
}
}
}
Но после выполнения этой функции я всегда вижу jpeg файл с черным фоном. Если я изменил формат на PNG, все будет ОК. Где я совершил ошибку?
Код для рисования:
@Override
protected void onDraw(Canvas canvas) {
canvas.drawColor(0x00FFFFFF);
canvas.drawBitmap(mBitmap, 0, 0, mBitmapPaint);
canvas.drawPath(mPath, mPaint);
}
Формат jpeg не поддерживает прозрачность. Именно поэтому при сохранении прозрачность становится черной.