• 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);

      

  • 相关阅读:
    WebLogic10 & MyEclipse 配置(转)
    java中的接口隔离(ISP)
    java多线程之 wait(),notify(),notifyAll()
    Windows Server 2008 R2终端服务器激活方法
    [zt]PHP+jQuery+Ajax实现用户登录与退出
    USACO Window AreaDFS矩形切割
    eWebEditor在IE8,IE7下所有按钮无效之解决办法
    [zt]【HoorayOS】开源的Web桌面应用框架——安装部署
    javascript Date format(js日期格式化)
    web design
  • 原文地址:https://www.cnblogs.com/qiengo/p/2487499.html
Copyright © 2020-2023  润新知