[英]what is the best way to work with Images in SqLite android?
我正在使用带有图片的可自定义数据库。 现在我正在拍摄照片,因为它来自SD卡并在base64
字符串中编码,然后将其放入数据库中。 但每当我尝试解码并在我的视图中显示它时,我都会Out of memory error
。 任何人都可以告诉我这是最好的程序吗? 在编码之前我应该改变图片的大小吗?
我想将所有图片re-size
为512*512
。
Image
到Base64
在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);
现在,您有两种选择,
正如许多答案所说的那样,对于Android来说,如果做得好的话,对于Android来说,这应该是一个很大的问题。
有许多原因可能需要将位图保存到数据库中(例如发票的照片?),这就是我这样做的方式。
首先,创建一个新的,较小的位图,如@Swapnil评论。
第二,正确使用位图转换方法,到目前为止我一直在使用这些(见下文)两个,并且在许多不同的设备上没有任何内存问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.