从相机拍摄并编码为Base64的图像质量较差

时间:2018-10-18 22:59:20

标签: android android-studio camera base64

我是android的新手,正在学习如何使用相机并将图片保存在sqlite数据库中。为此,我遵循此示例 https://github.com/sprejjs/MyMemoriesDB

实际上非常好,唯一的问题就是图片的质量。当您打开相机时,它看起来还不错,但是,当您保存相机时,它看起来很糟糕,失去了很多画质。如何使用该示例来提高质量?

1 个答案:

答案 0 :(得分:1)

如果查看该库的代码,您会发现Memory具有构造函数:

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;

只需将其更改为文件顶部的内容,或完全删除调整大小调用即可。