Сохранение картинки из галереи в моей папке внешний SD? - PullRequest
0 голосов
/ 10 декабря 2018

У меня есть действие для добавления нового сообщения, в каждом сообщении пользователь может выбрать изображение из галереи или сделать снимок с помощью камеры.Мой метод сохранения изображения подходит для изображения с камеры, но когда я выбираю изображение из галереи, в моей папке просто сохраняйте имя изображения с черным изображением.

public void saveImage(Bitmap myBitmap) {
   ByteArrayOutputStream bytes = new ByteArrayOutputStream();
    File wallpaperDirectory = new File(
            Environment.getExternalStorageDirectory() + IMAGE_DIRECTORY);

    if (!wallpaperDirectory.exists()) {
        wallpaperDirectory.mkdirs();
    }

    try {
        File f = new File(wallpaperDirectory, Calendar.getInstance()
                .getTimeInMillis() + ".jpg");
        img_name = f.getAbsolutePath();
        f.createNewFile();
        FileOutputStream fo = new FileOutputStream(f);
        fo.write(bytes.toByteArray());
        MediaScannerConnection.scanFile(this,
                new String[]{f.getPath()},
                new String[]{"image/jpeg"}, null);
        fo.close();
        Log.d("TAG", "File Saved::--->" + f.getAbsolutePath());

        return f.getAbsolutePath();
    } catch (IOException e1) {
        e1.printStackTrace();
    }
    return "";

И в моем RecyclerView ничего не отображается.

1 Ответ

0 голосов
/ 10 декабря 2018

Вы просто создаете новый файл изображения и ничего не сохраняете в нем.используйте следующее

FileOutputStream fo = new FileOutputStream(f);
myBitmap.compress(Bitmap.CompressFormat.PNG, 100, fo); // bmp is your Bitmap instance
fo.write(bytes.toByteArray());

, вам не хватает этого myBitmap.compress(Bitmap.CompressFormat.PNG, 100, fo);, поэтому добавьте его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...