Не удается сохранить растровое изображение в формате JPEG

1

У меня есть объект 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);
    }
  • 3
    Вы имеете в виду, что он просто черный, или ваше изображение имеет черный фон вместо прозрачного? Если вы имеете в виду последнее (я не думаю, что вы делаете, но) JPEG не поддерживает прозрачность.
  • 0
    Я имею в виду первое.
Теги:

1 ответ

1
Лучший ответ

Формат jpeg не поддерживает прозрачность. Именно поэтому при сохранении прозрачность становится черной.

  • 0
    Спасибо. Мне также нужно знать одну вещь - мне нужна кнопка «Очистить» - как я могу стереть свой чертежный вид?
  • 0
    Как ты рисуешь? На холсте?
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню