zoukankan      html  css  js  c++  java
  • Android save pictrue by SQLiteOpenHelper

    原理:图片是二进制文件,所以使用blob类型,将图片转换成字节数组,存储到数据库中。

    方法一:

    public void saveIcon(Bitmap icon) {
            if (icon == null) {
                return;
            }
    
            // 最终图标要保存到浏览器的内部数据库中,系统程序均保存为SQLite格式,Browser也不例外,因为图片是二进制的所以使用字节数组存储数据库的
            // BLOB类型
            final ByteArrayOutputStream os = new ByteArrayOutputStream();
            // 将Bitmap压缩成PNG编码,质量为100%存储        
            icon.compress(Bitmap.CompressFormat.PNG, 100, os); 
            // 构造SQLite的Content对象,这里也可以使用raw
            ContentValues values = new ContentValues(); 
            // 写入数据库的Browser.BookmarkColumns.TOUCH_ICON字段
            values.put(Browser.BookmarkColumns.TOUCH_ICON, os.toByteArray()); 
            
            DBUtil.update(....);//调用更新或者插入到数据库的方法
        }

    方法二:如果数据表入口时一个content:URI

    public void saveIcon(Bitmap icon) {
    if (icon == null) {
    return;
    }
    
    // 最终图标要保存到浏览器的内部数据库中,系统程序均保存为SQLite格式,Browser也不例外,因为图片是二进制的所以使用字节数组存储数据库的
    // BLOB类型
    final ByteArrayOutputStream os = new ByteArrayOutputStream();
    // 将Bitmap压缩成PNG编码,质量为100%存储    
    icon.compress(Bitmap.CompressFormat.PNG, 100, os); 
    // 构造SQLite的Content对象,这里也可以使用raw
    ContentValues values = new ContentValues(); 
    // 写入数据库的Browser.BookmarkColumns.TOUCH_ICON字段
    values.put(Browser.BookmarkColumns.TOUCH_ICON, os.toByteArray()); 
    
    DBUtil.update(....);//调用更新或者插入到数据库的方法
    }

    从数据库中读取:

    byte[] blob = cur.getBlob(cur.getColumnIndex(KEY_IMG));  
    Bitmap bmp = BitmapFactory.decodeByteArray(blob, 0, blob.length);

      

  • 相关阅读:
    Appium环境搭建-精简版
    Capability配置简介
    Appium简介
    MonkeyRunner 综合实践
    怎么将织梦图集模型编辑器改为文章编辑器?
    dedecms调用日期格式化形式大全
    让织梦内容页arclist标签的当前文章标题加亮显示
    DedeCMS中channelartlist自增参数global.itemindex
    织梦中在线显示pdf文件的方法
    如何修改DEDECMS文章标题长度
  • 原文地址:https://www.cnblogs.com/qiengo/p/2487499.html
Copyright © 2011-2022 走看看