[size=0.83em] 二维码和相片在sqlite数据库中的图片保存和查询 整体的工作流程如下: 保存流程:
查询流程: 该实例主要分为4个部分: 1、创建一个二维码和相片的数据库保存和查询的工程。 2、创建一个数据库。 3、二维码和相片的保存。 4、二维码和相片的查询。 1、创建工程 首先,打开已经配置好的androID应用开发的集中开发环境Eclipse。创建一个新的工程SaveImage,Target为2.3.3,包名为:com.yiyiweixiao,主Activity为main。 如下图所示:
然后,创建一个新的布局main.xml 布局代码如下所示: <?xml version="1.0" enCoding="utf-8"?>
<relativeLayout xmlns:androID="http://schemas.androID.com/apk/res/androID"
androID:orIEntation="vertical" androID:layout_wIDth="fill_parent"
androID:layout_height="fill_parent">
<button androID:layout_height="wrap_content" androID:ID="@+ID/button1"
androID:layout_wIDth="wrap_content"
androID:text="保存图片1"
androID:layout_alignParenttop="true" androID:layout_alignParentleft="true"></button>
<button androID:layout_height="wrap_content" androID:ID="@+ID/button2"
androID:layout_wIDth="wrap_content"
androID:text="保存图片2"
androID:layout_alignParenttop="true" androID:layout_toRightOf="@+ID/button1"></button>
<button androID:layout_height="wrap_content" androID:ID="@+ID/button3"
androID:layout_wIDth="wrap_content"
androID:text="查询图片1"
androID:layout_below="@+ID/button1" androID:layout_alignParentleft="true"></button>
<button androID:layout_height="wrap_content" androID:ID="@+ID/button4"
androID:layout_wIDth="wrap_content"
androID:text="查询图片2"
androID:layout_alignBaseline="@+ID/button3"
androID:layout_alignBottom="@+ID/button3" androID:layout_toRightOf="@+ID/button3"></button>
<ImageVIEw androID:src="@drawable/icon" androID:layout_wIDth="wrap_content"
androID:ID="@+ID/imageVIEw1"
androID:layout_height="wrap_content"
androID:layout_below="@+ID/button3" androID:layout_alignParentleft="true"></ImageVIEw>
<ImageVIEw androID:src="@drawable/icon" androID:layout_wIDth="wrap_content"
androID:ID="@+ID/imageVIEw2"
androID:layout_height="wrap_content"
androID:layout_aligntop="@+ID/imageVIEw1" androID:layout_alignleft="@+ID/button4"></ImageVIEw>
</relativeLayout> 复制代码
效果图如下:
2、创建一个数据库 首先,在包com.yiyiweixiao下面,创建一个sqliteOpenHelper助手类的实例MysqLiteOpenHelper.java。 代码如下: package com.yiyiweixiao;
import androID.content.Context;
import androID.database.sqlite.sqliteDatabase;
import androID.database.sqlite.sqliteOpenHelper;
import androID.database.sqlite.sqliteDatabase.CursorFactory;
public class MysqLiteOpenHelper extends sqliteOpenHelper {
// 重写构造方法
public MysqLiteOpenHelper(Context context,String name,
CursorFactory cursor,int version) {
super(context,name,cursor,version);
}
// 创建数据库的方法
public voID onCreate(sqliteDatabase db) {
// 创建一个数据库,表名:imagetable,字段:_ID、image。
db.execsql("CREATE table imagetable (_ID INTEGER PRIMARY KEY autoINCREMENT,image BLOB)");
}
// 更新数据库的方法
public voID onUpgrade(sqliteDatabase db,int oldVersion,int newVersion) {
}
} 复制代码 然后,在main.java中创建MysqLiteOpenHelper类的实例,并创建一个可读写的数据库。
// 创建助手类的实例
// CursorFactory的值为null,表示采用默认的工厂类
MysqLiteOpenHelper = new MysqLiteOpenHelper(this,"saveimage.db",null,1);
// 创建一个可读写的数据库
mydb = MysqLiteOpenHelper.getWritableDatabase(); 复制代码 3、二维码和相片向数据库中保存的方法。第一步:将图片转化为位图。 //将图片转化为位图
Bitmap bitmap1=BitmapFactory.decodeResource(getResources(),R.drawable.erweima); 复制代码 第二步:将位图转化为字节数组。 int size=bitmap1.getWIDth()*bitmap1.getHeight()*4;
//创建一个字节数组输出流,流的大小为size
ByteArrayOutputStream baos=new ByteArrayOutputStream(size);
//设置位图的压缩格式,质量为100%,并放入字节数组输出流中 bitmap1.compress(Bitmap.CompressFormat.PNG,100,baos);
//将字节数组输出流转化为字节数组byte[]
byte[] imagedata1=baos.toByteArray(); 复制代码 第三步:将字节数组保存到数据库。 //将字节数组保存到数据库中
ContentValues cv=new ContentValues();
cv.put("_ID",1);
cv.put("image",imagedata1);
mydb.insert("imagetable",cv);
//关闭字节数组输出流
baos.close(); 复制代码 保存成功后,在 DDMS 中,即可看到保存成功的文件。如下图所示:
用可视化开发工具打开后的列表如下所示:
4、从数据库中查询二维码和相片的方法。第一步:将数据库中的Blob(二进制大对象类型)数据转换为字节数组。方法如下: //创建一个指针
Cursor cur=mydb.query("imagetable",new String[]{"_ID","image"},null);
byte[] imagequery=null;
if(cur.movetoNext()){
//将Blob数据转化为字节数组imagequery=cur.getBlob(cur.getColumnIndex("image"));
} 复制代码 第二步:将字节数组转换为位图 //将字节数组转化为位图
Bitmap imagebitmap=BitmapFactory.decodeByteArray(imagequery,imagequery.length); 复制代码 第三步:将位图显示为图片 iv1=(ImageVIEw) findVIEwByID(R.ID.imageVIEw1);
//将位图显示为图片
iv1.setimageBitmap(imagebitmap); 复制代码 在模拟器中的显示效果如下
至此,便完成了二维码和图片在 sqlite 数据库中的保存和查询。具体的代码详见源代码,这里只是列出了核心代码。谢谢。 总结
以上是内存溢出为你收集整理的二维码和相片在SQLite中的图片保存和查询全部内容,希望文章能够帮你解决二维码和相片在SQLite中的图片保存和查询所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)