Изображение, снятое с камеры и закодированное в Base64, имеет плохое качество - PullRequest
0 голосов
/ 19 октября 2018

Я новичок на Android, я учусь пользоваться камерой и сохранять фотографии в базе данных sqlite.Для этого я следую этому примеру https://github.com/sprejjs/MyMemoriesDB

Это на самом деле очень хорошо, единственное - это качество снимков.Когда вы открываете камеру, она выглядит довольно хорошо, но затем, когда вы ее сохраняете, выглядит так плохо, теряет много качества.Как я могу повысить качество, используя этот пример?

1 Ответ

0 голосов
/ 19 октября 2018

если вы посмотрите на код библиотеки, то увидите, что в памяти есть конструктор:

public Memory(String title, Bitmap image) {
        this.title = title;
        this.image = bitmapToString(resizeBitmap(image));
}

Обратите внимание, что этот конструктор вызывает

resizeBitmap (image)

если вы посмотрите на этот код, вы увидите, что:

public static Bitmap resizeBitmap(Bitmap bitmap) {
    int width = bitmap.getWidth();
    int height = bitmap.getHeight();
    float scaleWidth = PREFERRED_WIDTH / width;
    float scaleHeight = PREFERRED_HEIGHT / height;

    Matrix matrix = new Matrix();
    matrix.postScale(scaleWidth, scaleHeight);
    Bitmap resizedBitmap = Bitmap.createBitmap(
            bitmap, 0, 0, width, height, matrix, false);
    bitmap.recycle();
    return resizedBitmap;
}

Код фактически изменяет размер изображения до 250/250, прежде чем преобразовать его в Base64.

private static final float PREFERRED_WIDTH = 250;
private static final float PREFERRED_HEIGHT = 250;

Просто измените это на то, что вы хотите в верхней части файла или вообще удалите вызов resize.

...