有如下两种方法,仅供参考
方法一:Java代码
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:URIJava代码
import android.provider.MediaStore.Images.Media
import android.content.ContentValues
import java.io.OutputStream
// Save the name and description of an image in a ContentValues map.
ContentValues values = new ContentValues(3)
values.put(Media.DISPLAY_NAME, "road_trip_1")
values.put(Media.DESCRIPTION, "Day 1, trip to Los Angeles")
values.put(Media.MIME_TYPE, "image/jpeg")
// Add a new record without the bitmap, but with the values just set.
// insert() returns the URI of the new record.
Uri uri = getContentResolver().insert(Media.EXTERNAL_CONTENT_URI, values)
// Now get a handle to the file for that record, and save the data into it.
// Here, sourceBitmap is a Bitmap object representing the file to save to the database.
try {
OutputStream outStream = getContentResolver().openOutputStream(uri)
sourceBitmap.compress(Bitmap.CompressFormat.JPEG, 50, outStream)
outStream.close()
} catch (Exception e) {
Log.e(TAG, "exception while writing image", e)
}
原文请看http://www.bafenbaosoft.com/post/48.html
存储图片是在SdCard下的,不要放在数据库里面。否则用户在设置里找到你的应用--》"清除数据"你的图片岂不是全部丢掉了.所以开发时图片一般在内存中或者在Sdcard中
无论图片在哪都可以让适配器去连接你的图片与UI显示的。要理解 View -Adapter -source 三者之间的关系对你有莫大的好处.
仅仅伸手要代码,无任何好处,下次你还不会懂
一般数据库中是不保存图片的,保存的是图片存放路径,图片放到文件夹中,如果放到数据库中数据库会很大,影响读取速度。如果想放就把字段定义为如:`img` longblob;
然后就可以读取文件流 存储到数据库中了就可以了
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)