【问题标题】:Image taken from camera and encoded to Base64 has bad quality从相机拍摄并编码为 Base64 的图像质量很差
【发布时间】:2018-10-18 22:59:19
【问题描述】:

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

其实挺好的,就是画质。当您打开相机时,它看起来还不错,但是当您保存它时,它看起来很糟糕,损失了很多质量。如何使用该示例提高质量?

【问题讨论】:

  • Sqlite 并不能真正存储高分辨率图像
  • @androiddevjs 如果您发现答案正确且有用,请将其标记为已回答以结束此问题。
  • @ItamarKerbel 很抱歉我没有标记正确答案!你是正确的。非常感谢。

标签: android android-studio camera base64


【解决方案1】:

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

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

注意这个构造函数调用

resizeBitmap(图像)

如果您查看该代码,您会发现:

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;
}

代码实际上在将图像转换为 Base64 之前将其大小调整为 250/250。

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

只需将其更改为文件顶部所需的内容或完全删除 resize 调用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-15
    • 1970-01-01
    • 2017-02-06
    • 2018-09-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多