前端之家收集整理的这篇文章主要介绍了
关于SQLite 数据库 读写图片的问题,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
数据库中
图片的字段名为image,数据类型 是blob --------------------------------以下是存入------------------ ByteArrayOutputStream baos = new ByteArrayOutputStream(); --------------------------第一种
图片数据来源----------------------------------------------------------- //如果
图片数据来源是ImageView组件中的
图片,可以用以下
方法,mImageview_save是个ImageView的对象 //PNG是存入的
图片格式,100是
图片质量(0-100) ((BitmapDrawable) mImageview_save.getDrawable()).getBitmap() .compress(CompressFormat.PNG,100,baos); ---------------------------第二种
图片数据来源--------------------------------------------------------- //如果
图片数据来源是Drawable型,可以用以下
方法,drawableimage是Drawable对象 ((BitmapDrawable) drawableimage).getBitmap().compress( CompressFormat.PNG,baos); ---------------------------第三种
图片数据来源--------------------------------------------------------- //如果
图片数据来源是资源ID,可以用以下
方法,先将对应ID的
图片对象转为drawable型 Resources res = this.getResources(); Drawable mDrawable = res.getDrawable(R.drawable.xx); ((BitmapDrawable) mDrawable).getBitmap().compress( CompressFormat.PNG,baos); ----------------------------------------------------------------------------------------------- byte[] savebyte = baos.toByteArray(); //将byte[]数据插入
数据库 mdb.insertImage("cy5",savebyte); ----------------------以下是读取--------------------------------- Cursor mCursor; mCursor = mdb.queryImage("cy5"); startManagingCursor(mCursor); mCursor.moveToFirst(); byte[] getbyte = mCursor.getBlob(mCursor.getColumnIndex("image")); ByteArrayInputStream bais = new ByteArrayInputStream(getbyte); mImageview_get.setImageDrawable(Drawable.createFromStream(bais,"photo")); //photo是标识,可以不写,据说是调试的时候可能会用上.