Сохраненное растровое изображение в файл PNG случайным образом становится черным - PullRequest
0 голосов
/ 21 октября 2019

Я обрабатываю около 4 изображений / секунд из предварительного просмотра камеры, сохраняю его в файл png и отправляю на сервер.

Я пока не могу определить, почему, но 1 раз из 2 текущегоСессия будет хранить .png как полностью черные картинки. Размер файла также очень мал (3 КБ по сравнению с обычными 700 КБ).

Вот как я могу сохранить растровое изображение в виде файла PNG:

public static File SaveImagePNG(Bitmap subimg, String path, String filename) {
        FileOutputStream out = null;

    File sd = new File(path);
    boolean success = true;
    if (!sd.exists()) {
        success = sd.mkdir();
    }
    if (success) {
        File dest = new File(sd, filename);

        try {
            out = new FileOutputStream(dest);
            if (subimg != null) {
                // PNG is a lossless format, the compression factor (100) is ignored
                subimg.compress(Bitmap.CompressFormat.PNG, 100, out); // bmp is your Bitmap instance
            }
        } catch (Exception e) {
            e.printStackTrace();
            Log.d(TAG, e.getMessage());
        } finally {
            try {
                if (out != null) {
                    out.close();
                    Log.d(TAG, "OK!!");
                }
            } catch (IOException e) {
                Log.d(TAG, e.getMessage() + "Error");
                e.printStackTrace();
            }
        }
        return dest;
    }
    return null;
}

и вот как я это называю:

        val pathFilePNG = Environment.getExternalStorageDirectory().toString() + "/images"

        requestParams[0]?.bitmapRGB?.setHasAlpha(false)
        val imageFaceRGBFile = BitmapUtils.SaveImagePNG(requestParams[0]?.bitmapRGB, pathFilePNG, "faceRGB.png")
...