如何减小图像的大小,使其适合blob类型..?

时间:2016-10-04 06:47:20

标签: android

我正在使用此代码压缩图像

     imageText=encodeToBase64(bitmap, Bitmap.CompressFormat.PNG,100);

但是当我将这个图像存储到我的数据库和属性类型blobmedium中时,显示(加载)图像需要花费太多时间。
即使我的原始图像大小为32 Kb,它也会在数据库中存储为259 Kb。

当我在数据库中使用tinyblob或blob类型作为图像属性时,它会存储值,但不会在UI中显示任何结果。

如何减小图像的大小以使其适合tinyblobb或blob?
这样我就可以成功存储和获取图像。

1 个答案:

答案 0 :(得分:0)

使用以下代码压缩图像:

Bitmap thumbnail = (Bitmap) data.getExtras().get("data");
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
thumbnail.compress(Bitmap.CompressFormat.JPEG, 90, bytes);

// call to base64 image conversion method:
String encodeToBase64 = bitmapToBase64(thumbnail);

然后将其编码为base64格式:

private String bitmapToBase64(Bitmap bmp)
{
    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
    bmp.compress(Bitmap.CompressFormat.PNG, 100, byteArrayOutputStream);
    byte[] byteArray = byteArrayOutputStream .toByteArray();
    return Base64.encodeToString(byteArray, Base64.DEFAULT);
}

请注意:BLOB最多可以为65535个字节。如果您需要更多考虑使用MEDIUMBLOB表示16777215字节或LONGBLOB表示4294967295字节