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

      

  • 相关阅读:
    jquery deferred对象
    一张图道尽Javascript的原型继承
    Reflection
    vim操作
    转载:HTTP调试工具:Fiddler的使用方法介绍
    转载:计算机网络面试题
    20120810
    new pad不能用usb充电的解决方法
    20120416
    Lua入门——环境安装
  • 原文地址:https://www.cnblogs.com/qiengo/p/2487499.html
Copyright © 2011-2022 走看看