繁体   English   中英

在SqLite android中使用Images的最佳方法是什么?

[英]what is the best way to work with Images in SqLite android?

我正在使用带有图片的可自定义数据库。 现在我正在拍摄照片,因为它来自SD卡并在base64字符串中编码,然后将其放入数据库中。 但每当我尝试解码并在我的视图中显示它时,我都会Out of memory error 任何人都可以告诉我这是最好的程序吗? 在编码之前我应该​​改变图片的大小吗?

我想将所有图片re-size512*512

ImageBase64在android中是非常繁重的操作。 考虑将图像保存在外部/内部存储器中,并将文件路径保存在sqlite数据库中。

您可以将图像转换为字节数组,然后使用BLOB类型将值存储在sql中,反之亦然。

如您所述,您想要将图像大小调整为512 * 512,您可以使用下面的代码缩放图像,从捕获的图像创建位图,然后使用下面的行

Bitmap resizedBitmap = Bitmap.createScaledBitmap(myBitmap, 512, 512, false);

它会给你一个较小的图像,你也可以考虑压缩图像以减小尺寸,

OutputStream imagefile = new FileOutputStream("/your/file/name.jpg");
// Write 'bitmap' to file using JPEG and 50% quality hint for JPEG:
bitmap.compress(CompressFormat.JPEG, 50, imagefile);

现在,您有两种选择,

  1. 将缩放和压缩的图像保存到文件中,并将该文件的路径保存在db中。 (更好的方法)
  2. 将缩放和压缩的图像转换为base64字符串并保存在db中。

正如许多答案所说的那样,对于Android来说,如果做得好的话,对于Android来说,这应该是一个很大的问题。

有许多原因可能需要将位图保存到数据库中(例如发票的照片?),这就是我这样做的方式。

首先,创建一个新的,较小的位图,如@Swapnil评论。

第二,正确使用位图转换方法,到目前为止我一直在使用这些(见下文)两个,并且在许多不同的设备上没有任何内存问题。

链接到我的BitmapUtils转换方法

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM