如何在数据库中存储图像?

时间:2014-07-29 11:23:32

标签: android database bitmap

我需要存储从图库中选择的数据库图像。我的想法是将Bitmap转换为String并将String存储在数据库中,但现在我正在阅读其他帖子:saving image clicked from camera or loaded from gallery in database and retrieving it并建议使用字节数组。 有人可以解释我的差异,哪个想法更好?也许别的什么? 我刚开始,但我想写得正确。

2 个答案:

答案 0 :(得分:0)

将图像存储为byte[]字段中BLOB的标准方法。另一种可能性 - 带来一些开销 - 是存储一个Base64编码的字符串。

答案 1 :(得分:0)

您可以使用Base64 Android类:

 String encodedImage = Base64.encodeToString(byteArrayImage, Base64.DEFAULT);

您必须将图像转换为字节数组。这是一个例子:

  Bitmap bm = BitmapFactory.decodeFile("/path/to/image.jpg");
  ByteArrayOutputStream baos = new ByteArrayOutputStream();  
  bm.compress(Bitmap.CompressFormat.JPEG, 100, baos); //bm is the bitmap object   
  byte[] b = baos.toByteArray(); 

如果您正在使用较旧的SDK库(因为您希望它可以在具有较旧版本操作系统的手机上运行),您将无法打包Base64类(因为它刚刚在API中出现)等级8又称版本2.2)。

查看本文以获取解决方法:

http://androidcodemonkey.blogspot.com/2010/03/how-to-base64-encode-decode-android.html