сохранение файла на SD-карту, запись файла размером 0 - PullRequest
1 голос
/ 10 марта 2012

У меня проблемы с сохранением изображений на SD-карте. Я могу увидеть файл на SD-карте, но файл пуст (размер 0). Я попытался сохранить его в памяти телефона, и он работает нормально. Вот мой код.

    Imagewritter {

       public static boolean writeAsJPG(Context context, Bitmap bitmap,
    String filename) {
       filename = filename + ".jpg";
       File path = Environment.getExternalStorageDirectory();

    File f = new File(path, filename);
    FileOutputStream fos = null;

    try {
        fos = new FileOutputStream(f);
    } catch (FileNotFoundException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }

    try {
        fos = context.openFileOutput(filename, Context.MODE_WORLD_READABLE);
    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        Log.d(TAG, "file not found");
        return false;
    }

    bitmap.compress(CompressFormat.JPEG, quality, fos);
    try {
        fos.flush();
        fos.close();
    } catch (IOException e) {
        Log.d(TAG, "error closing");
        e.printStackTrace();
    }
    }

вот код, откуда берется растровое изображение.

    DrawingView = (drawing) findViewById(R.id.drawing_view);
    drawingBitmap = (Bitmap) DrawingView.getBitmap();
    String idName = timeStampText;
    //save Image as JPG
    ImageWritter.writeAsJPG(getApplicationContext(), drawingBitmap, idName);

Ответы [ 3 ]

2 голосов
/ 10 марта 2012

я думаю, вам нужно добавить эти разрешения в файл манифеста

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
0 голосов
/ 12 марта 2012

Единственная проблема здесь в том, что у меня есть две строки для записи файла. Использование FileOutputStream и OpenFileOutput. Просто удали эти строки, и все будет хорошо.

    try {
        fos = context.openFileOutput(filename, Context.MODE_WORLD_READABLE);
    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        Log.d(TAG, "file not found");
        return false;
    }
0 голосов
/ 10 марта 2012

Получить изображение в байтовом массиве и проверить размер этого байтового массива .. Я думаю, что вы получаете байтовый массив 0 размера .....

...