摘要:最终发现,利用及其相关的工具类即可实现图片的存储以及显示。经过一些数据库的操作,即可以把用户上传的图片存入到数据库中。我们还没有测试过资源的消耗以及延时的情况,但确实是可以存储图片到数据库中的。
这是我的第一篇博文,请大家多多指教!
大概一个月之前,在跟朋友合作开发一个APP的过程中,我们发现到一个问题:图片的存储。因为数据库没有图片这种数据类型,当用户上传的图片需要存储的时候,我们无法将其直接放进数据库中。
在经历了几天的探索,结合郭神的《第二行代码》调用摄像头拍照以及从相册中选择图片这两小节,我们发现了Android里面的一个图片类:Bitmap。最终发现,利用Bitmap及其相关的工具类即可实现图片的存储以及显示。
主要用到的工具类:
import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.util.Base64; import java.io.ByteArrayOutputStream; /** * Created by cartoon on 2017/12/9. */ public class StringAndBitmap { //图片与String之间的转换,便于将图片存储在数据库中 private Bitmap bitmap; private String string; public Bitmap stringToBitmap(String string){ //数据库中的String类型转换成Bitmap if(string!=null){ byte[] bytes= Base64.decode(string,Base64.DEFAULT); bitmap= BitmapFactory.decodeByteArray(bytes,0,bytes.length); return bitmap; } else { return null; } } public String bitmapToString(Bitmap bitmap){ //用户在活动中上传的图片转换成String进行存储 if(bitmap!=null){ ByteArrayOutputStream stream = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream); byte[] bytes = stream.toByteArray();// 转为byte数组 string=Base64.encodeToString(bytes,Base64.DEFAULT); return string; } else{ return ""; } } }
下面已经获取到数据库中已经存储了的图片的String语句string,只需要在需要显示图片的组件中调用关于显示Bitmap的方法即可。
imageView.setImageBitmap(stringAndBitmap.stringToBitmap(string); //这里的imageView为页面组件绑定的ID,string为从数据库获取到图片的string形态
而存储用户上传的图片则需要这样即可。
bitmap=((BitmapDrawable)imageView.getDrawable()).getBitmap(); string=stringAndBitmap.bitmapToString(bitmap);
经过一些数据库的操作,即可以把用户上传的图片存入到数据库中。
因为数据库部分不是我负责的,所以我的建议是数据库中的类型选择BLOB(MySQL),因为已经实现过是可行的。
以上就是之前开发的一点小技巧,也是经过痛领会出来的。我们还没有测试过资源的消耗以及延时的情况,但确实是可以存储图片到数据库中的。
如果你们有任何对这篇博文的建议或者意见的话,欢迎私信或者在下方评论。最重要的是可以帮助到像我们一样的入门者。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/14932.html
摘要:将经纬度转换为详细地址,就要访问谷歌地图提供的地址查询接口了,该接口的地址形如请求参数信息,把经纬度数据作文请求参数传入,对方会返回一个包含地址信息的串,通过解析串即可获得当前的详细地址。手机上的资源毕竟有限,为了获取更丰富的信息,就得到辽阔的互联网大海上冲浪。对于App自身,也要经常与服务器交互,以便获取最新的数据显示到界面上。这个客户端与服务端之间的信息交互,基本使用HTTP协议进行通信...
摘要:导语智能手机发展到今天已经有十几个年头,手机的软硬件都已经发生了翻天覆地的变化,特别是阵营,从一开始的一两百到今天动辄,内存。恰好最近做了内存优化相关的工作,这里也对内存优化相关的知识做下总结。 导语 智能手机发展到今天已经有十几个年头,手机的软硬件都已经发生了翻天覆地的变化,特别是Android阵营,从一开始的一两百M到今天动辄4G,6G内存。然而大部分的开发者观看下自己的异常上报系...
摘要:导语智能手机发展到今天已经有十几个年头,手机的软硬件都已经发生了翻天覆地的变化,特别是阵营,从一开始的一两百到今天动辄,内存。恰好最近做了内存优化相关的工作,这里也对内存优化相关的知识做下总结。 导语 智能手机发展到今天已经有十几个年头,手机的软硬件都已经发生了翻天覆地的变化,特别是Android阵营,从一开始的一两百M到今天动辄4G,6G内存。然而大部分的开发者观看下自己的异常上报系...
摘要:在中这些命令本身都是对字符串的操作。到最后一只都是一个思想,就是合,合,合,合如果要计算位,继续合就可以了。 setbit,getbit这些命令在redis是如何储存和获取的呢?直接通过get获取到的值我们如何判断对应的位是0或者1? 本编文章可以看为[Redis中BitMap的妙用]的续篇。 在Redis中setbit,set,getbit,get这些命令本身都是对字符串(SDS)的...
阅读 1192·2021-11-24 09:39
阅读 4734·2021-11-23 09:51
阅读 1172·2021-11-04 16:12
阅读 2483·2021-09-24 09:47
阅读 3156·2021-09-01 10:50
阅读 1277·2019-08-30 15:55
阅读 1308·2019-08-30 15:43
阅读 498·2019-08-30 11:08