Android学习 之 Bitmap Drawable byte[] 三者之间的转换以及把数组存入数据库及提取数据重新组合成所需对象,如图像
来源:互联网 发布:软件操作说明书模板 编辑:程序博客网 时间:2024/06/06 07:41
Android学习 之 Bitmap Drawable byte[] 三者之间的转换以及把数组存入数据库及提取数据重新组合成所需对象,如图像
1.创建数据库表的时候选择存图片的字段类型为blob
StringBuffer createTableOfHistory =
new
StringBuffer();
createTableOfHistory.append(
"CREATE TABLE "
+某表名);
createTableOfHistory.append(
" ( _id INTEGER PRIMARY KEY AUTOINCREMENT ,"
);
createTableOfHistory.append(该存图片的字段名+
" BLOB ,"
);
createTableOfHistory.append(其他字段名
1
+
" TEXT ,"
);
.......
createTableOfHistory.append(其他字段名n+
" TEXT );"
);
//记得这里带个“;”封号
db.execSQL(createTableOfHistory.toString());
//执行该创表语句
2.存储数据
2.1将数据流转成数组的方法
InputStream inputStream = getResources().openRawResource(R.drawable.icon);
private
static
byte
[] streamToBytes(InputStream is) {
ByteArrayOutputStream os =
new
ByteArrayOutputStream(
1024
);
byte
[] buffer =
new
byte
[
1024
];
int
len;
try
{
while
((len = is.read(buffer)) >=
0
) {
os.write(buffer,
0
, len);
}
}
catch
(java.io.IOException e) {
}
return
os.toByteArray();
}
2.2.将Bitmap对象转换成数组的方法【包含从资源文件中获得图片对象Bitmap】
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.icon);
private
static
byte
[] bitmapToBytes(Bitmap bitmap){
if
(bitmap ==
null
) {
return
null
;
}
final
ByteArrayOutputStream os =
new
ByteArrayOutputStream();
// 将Bitmap压缩成PNG编码,质量为100%存储
bitmap.compress(Bitmap.CompressFormat.PNG,
100
, os);
//除了PNG还有很多常见格式,如jpeg等。
return
os.toByteArray();
}
ContentValues values =
new
ContentValues();
values.put(该存图片的字段名, readHistoryInfo.getBookIcon());
values.put(其他字段名
1
, “
2011
-
05
-
17
”);
......
return
mSqliteDatabase.insert(表名,
null
, values);
//插入数据
3.提取数据库中的数组数据并转换成Bitmap或DrawableBitmap对象【包含byte[] —> Bitmap】
某类对象m(该类是负责创表,删表,插入数据,删除数据的类).openOrCreateDB();//openOrCreateDB()也是该类的一个打开或创建数据库的方法。
Cursor cursor = 某类对象m.getData(该存图片的字段名,
null
);
if
(cursor.moveToFirst()) {
// byte[] —> Bitmap
byte
[] bytes = cursor.getBlob(cursor.getColumnIndex(该存图片的字段名));
Bitmap bitmap = BitmapFactory.decodeByteArray(bytes,
0
, bytes.length,
null
);
BitmapDrawable bitmapDrawable =
new
BitmapDrawable(bitmap);
}
4.Drawable —> Bitmap
Bitmap bm = xxx;
//xxx根据你的情况获取
BitmapDrawable bd=
new
BitmapDrawable(bm);
提示:因为BtimapDrawable是Drawable的子类,最终直接使用bd对象即可。
public
static
Bitmap drawableToBitmap(Drawable drawable) {
Bitmap bitmap = Bitmap.createBitmap(
drawable.getIntrinsicWidth(),
drawable.getIntrinsicHeight(),
drawable.getOpacity() != PixelFormat.OPAQUE ?
Bitmap.Config.ARGB_8888: Bitmap.Config.RGB_565);
return
bitmap;
}
Drawable d=xxx;
//xxx根据自己的情况获取drawable
BitmapDrawable bd = (BitmapDrawable) d;
Bitmap bm = bd.getBitmap();
- Android学习 之 Bitmap Drawable byte[] 三者之间的转换以及把数组存入数据库及提取数据重新组合成所需对象,如图像
- Bitmap Drawable byte[] 三者之间的转换以及把数组存入数据库及提取数据重新组合成所需对象
- android byte[]数组,bitmap,drawable之间的相互转换
- android byte数组,bitmap,drawable之间的转换
- Android中的Bitmap、Drawable、Byte[]、String、之间的转换及图像简单处理
- Android Drawable、Bitmap、byte[]之间的转换
- Android Drawable、Bitmap、byte[]之间的转换
- Android Drawable、Bitmap、byte[]之间的转换
- Android Drawable、Bitmap、byte[]之间的转换
- android Bitmap,byte[],Drawable之间的转换
- Android Bitmap - Drawable-Byte之间的转换
- Android Drawable、Bitmap、byte[]之间的转换
- Android Drawable、Bitmap、byte[]之间的转换
- Drawable、Bitmap、byte[]之间的转换 Bitmap转换成InputStream。
- Drawable、Bitmap、byte[]之间的转换 (android转)
- Android中Bitmap, ID,Drawable, Byte之间的转换
- 【Android】Bitmap、InputStream、Drawable、byte[]、Base64之间的相互转换
- Drawable、Bitmap、byte[]之间的转换
- unix环境高级编程 代码编译
- 使atl开发的activex控件不弹脚本安全提示
- POJ 1141 Brackets Sequence(区间DP)
- 第11章 GUI 11 Paint 方法
- POJ1682-Clans on the Three Gorges
- Android学习 之 Bitmap Drawable byte[] 三者之间的转换以及把数组存入数据库及提取数据重新组合成所需对象,如图像
- CF_div2_C_神代码跟踪体会。
- UIWindow介绍
- GT_COUNT.cpp支配值数目
- POJ 1195 - Moblie phones
- windows xp“显示桌面”快捷方式不见时处理方法
- hdu 2462 数学欧拉 The Luckiest number
- MySQL索引背后的数据结构及算法原理
- [AIR Mobile] air 移动开放,usb调试,后台推送,配置文件,ios设置