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

      

  • 相关阅读:
    DG查看恢复进度
    dataguard主备延迟多长时间的查询方法
    DG动态性能视图详解
    Django之ORM的增删改查操作流程
    IPython
    render函数和redirect函数的区别+反向解析
    http状态码
    图的基本概念
    图的遍历
    vue之webpack打包工具的使用
  • 原文地址:https://www.cnblogs.com/qiengo/p/2487499.html
Copyright © 2020-2023  润新知