本文引自:http://www.cnblogs.com/enricozhang/archive/2011/09/29/2195601.html
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.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();
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();
}
分享到:
相关推荐
在VC(Visual C++)环境下,Bitmap对象是用于表示图像的一种常见数据结构,而`Byte[]`(字节数组)则常用于数据传输或存储。本篇文章将详细解释如何在VC中将Bitmap对象转换为Byte数组。 首先,理解Bitmap对象。...
在Android开发中,处理图像数据时,我们经常需要在Drawable、Bitmap、InputStream和byte数组之间进行转换。这些类型的转换在不同的场景下具有重要的作用,例如从网络加载图片、存储图片到本地或者显示在ImageView上...
本文将详细介绍`Drawable`、`Bitmap`及`byte[]`三者之间的转换方法,并提供具体的实现代码。 #### 1. Drawable转Bitmap `Drawable`是Android中用于表示图像的一种抽象类,它并不直接表示图像数据,而是通过不同的...
在Android开发中,图片资源的处理是常见的需求之一,尤其涉及到不同格式间的转换,如Drawable、Bitmap、byte数组以及灰度图像的转换。这些转换在实际应用中具有重要意义,不仅能够优化内存使用,还能实现图像的高效...
在Android开发中,图片资源的处理是常见的需求之一,涉及到多种数据类型之间的转换,包括`Drawable`、`Bitmap`、`byte[]`等。本文将详细介绍这些类型之间的转换方法,以及如何实现灰度图像的转换。 ### 1. `...
在Android开发中,Bitmap是用于表示图像数据的一种对象,它在内存中占用较大空间,因此在处理图片时,我们有时需要将其转换为byte数组(byte[]),以便于存储、传输或者在网络流中使用。这个过程涉及到图像数据的...
在C#编程语言中,将byte数组转换为8bit灰度图像是一项常见且重要的技能,尤其是在处理图像数据或开发图像处理应用时。本文将详细解析这一过程,包括关键概念、技术细节以及具体实现步骤。 ### 关键概念 1. **8bit...
在处理图像时,我们可能会遇到需要在不同的数据类型之间转换的情况,比如从Bitmap到Stream,再到byte数组,最后再还原回Bitmap。这样的转换在上传图片、存储图片数据或在网络中传输时非常常见。本篇文章将详细介绍...
- 当Drawable包含动画时(如Animatable),转换成Bitmap可能会丢失动画效果。 - 使用`Drawable.ConstantState`可以复用Drawable,减少内存开销,但不适用于所有类型的Drawable。 4. **应用场景** - Bitmap更...
1. **Bitmap转byte[]**:Bitmap对象可以通过`compress()`方法压缩成字节数组,通常会选择特定的格式如PNG或JPEG,并设置压缩质量。例如,`bm.compress(Bitmap.CompressFormat.PNG, 100, baos)`将Bitmap对象压缩为PNG...
在Android开发中,Bitmap是用于显示图像的基本类,它是一个位图对象,通常用来加载、显示和处理图片。然而,由于Bitmap对象占用大量的内存,直接加载大图片可能会导致内存溢出(Out Of Memory,OOM)问题。因此,...
本文将详细介绍如何在Android中实现`Drawable`与`Bitmap`之间的相互转换,并探讨这两种类型的图像数据在实际应用中的应用场景。 #### 一、Drawable简介 `Drawable`是Android中用于表示图形的一种抽象类,它可以是...
在VC中使用Halcon进行图像处理,首先需掌握如何读取图像文件以及获取图像的内存指针。`read_image()` 和 `get_image_pointer1()` 是两个关键函数,它们分别用于读取图像文件和获取指向图像数据的内存指针。在Halcon...
位图(Bitmap,通常缩写为BMP)是一种常见的图像文件格式,广泛应用于Windows操作系统以及许多其他软件中。BMP文件格式是未经压缩的,它存储了图像的每个像素的颜色信息,因此文件体积相对较大。在C++编程中,生成...
### 把真彩色BMP位图转化为二维数组 在计算机编程与图像处理领域,将BMP格式的位图转换为二维数组是一项非常实用的技术。这种技术不仅能够帮助开发者更好地理解和操作图像数据,还在诸如机器人视觉识别等应用中扮演...
2、把从数据库读取的byte数组转换为Image对象,赋值给相应的控件显示。 3、从图片byte数组得到对应图片的格式,生成一张图片保存到磁盘上。 这里的Image是System.Drawing.Image。 //Get an image from file Image...
Bitmap图像转换为H264是一项在数字视频处理和多媒体应用中常见的技术。Bitmap(BMP)是一种无损的图像文件格式,它以原始的像素数据存储图像,占用的存储空间较大,不适合在网络传输和存储中使用。而H264(也称为AVC...
在这种情况下,我们需要从HALCON的图像对象(HObject)中提取像素数据,进行处理后再将结果写回HObject。本示例中,我们将在VS2010上实现一个简单的图像处理流程,包括读取图像、拉普拉斯边缘检测、读取RGB像素数据...
在Android开发中,处理图像数据是一项常见的任务,而Bitmap和String是两个核心的数据类型,分别代表位图图像和文本字符串。Bitmap对象用于存储和显示图像,而String则常用于保存和传输文本信息。本篇文章将深入探讨...
在深入探讨Bitmap、BitmapDrawable与Drawable之间的关系以及它们之间的转换之前,我们首先需要明确这三种类型的基本概念和各自的功能。 ### Drawable Drawable是Android中一个非常基础且重要的接口,它代表了可以...