`

Bitmap Drawable byte[] 三者之间的转换以及把数组存入数据库及提取数据重新组合

 
阅读更多

Bitmap Drawable byte[] 三者之间的转换以及把数组存入数据库及提取数据重新组合成所需对象,如图像(2011-11-24 16:00:19)转载▼标签: 杂谈 
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();

分享到:
评论

相关推荐

    Drawable Bitmap InputStream byte[]相互转化工具类

    在Android开发中,处理图像数据时,我们经常需要在Drawable、Bitmap、InputStream和byte数组之间进行转换。这些类型的转换在不同的场景下具有重要的作用,例如从网络加载图片、存储图片到本地或者显示在ImageView上...

    android_Drawable、Bitmap、byte[]之间的转换.doc

    本文将详细介绍`Drawable`、`Bitmap`及`byte[]`三者之间的转换方法,并提供具体的实现代码。 #### 1. Drawable转Bitmap `Drawable`是Android中用于表示图像的一种抽象类,它并不直接表示图像数据,而是通过不同的...

    将Bitmap转换为Byte[]

    总的来说,将Bitmap转换为Byte数组是图形处理和数据存储中常见的操作,它在各种场景下都有应用,比如网络传输、数据库存储、序列化等。理解并掌握这个过程,对于进行高效的图像处理和数据操作至关重要。

    Android Drawable、Bitmap、byte、灰度 之间的转换

    在Android开发中,图片资源的处理是常见的需求之一,尤其涉及到不同格式间的转换,如Drawable、Bitmap、byte数组以及灰度图像的转换。这些转换在实际应用中具有重要意义,不仅能够优化内存使用,还能实现图像的高效...

    Android Drawable、Bitmap、byte、灰度 转换

    在Android开发中,图片资源的处理是常见的需求之一,涉及到多种数据类型之间的转换,包括`Drawable`、`Bitmap`、`byte[]`等。本文将详细介绍这些类型之间的转换方法,以及如何实现灰度图像的转换。 ### 1. `...

    将Bitmap转成byte[]小例子

    在Android开发中,Bitmap是用于表示图像数据的一种对象,它在内存中占用较大空间,因此在处理图片时,我们有时需要将其转换为byte数组(byte[]),以便于存储、传输或者在网络流中使用。这个过程涉及到图像数据的...

    C#中bitmap、stream、byte类型转换实例

    在处理图像时,我们可能会遇到需要在不同的数据类型之间转换的情况,比如从Bitmap到Stream,再到byte数组,最后再还原回Bitmap。这样的转换在上传图片、存储图片数据或在网络中传输时非常常见。本篇文章将详细介绍...

    Android Drawable Bitmap 相互转换

    要将Drawable转换为Bitmap,可以使用`Drawable`的`toBitmap()`方法(此方法在API 24及以上版本可用)。对于较低版本,我们可以使用以下代码: ```java Bitmap bitmap = drawableToBitmap(drawable); public ...

    android bitmap通过byte数组以流的形式创建

    以上就是通过byte数组以流的形式创建Bitmap的详细过程,以及如何结合进度条来提高用户体验。在实际开发中,还需要注意内存管理和图片缓存策略,以避免内存泄漏和性能问题。合理的Bitmap管理和加载策略对于提升应用...

    Bitmap,byte[],Drawable相互转化

    Bitmap是Android系统中用于存储和处理图像数据的重要类,它是一个位图,即像素的二维数组,常用于显示和操作图像。BitmapFactory是用于解析图片资源并生成Bitmap对象的工具类,例如`BitmapFactory.decodeResource()`...

    Drawable Bitmap之间的转化

    #### 三、Drawable与Bitmap之间的转换方法 1. **从Drawable转换到Bitmap** 要实现从`Drawable`到`Bitmap`的转换,可以通过以下步骤完成: ```java public static Bitmap drawableToBitmap(Drawable drawable) ...

    C#中将byte数组转换为8bit灰度图像

    在C#编程语言中,将byte数组转换为8bit灰度图像是一项常见且重要的技能,尤其是在处理图像数据或开发图像处理应用时。本文将详细解析这一过程,包括关键概念、技术细节以及具体实现步骤。 ### 关键概念 1. **8bit...

    C#byte数组与Image的相互转换实例代码

    1、把一张图片(png bmp jpeg bmp gif)转换为byte数组存放到数据库。 2、把从数据库读取的byte数组转换为Image对象,赋值给相应的控件显示。 3、从图片byte数组得到对应图片的格式,生成一张图片保存到磁盘上。 ...

    Halcon_Bitmap转换

    ### Halcon_Bitmap转换:深度解析与实践指南 在图像处理和机器视觉领域,Halcon作为一款强大的软件包,提供了丰富的工具和算法,用于解决图像分析、特征检测、模式识别等复杂任务。然而,面对特定的应用场景,开发...

    bmp2c位图转换为c数组

    总结来说,"bmp2c位图转换为c数组"是将位图文件转换成适合嵌入式系统使用的C语言数组的过程,涉及到图像格式的理解、颜色空间转换以及C编程技术。这个过程对于开发具有开机启动画面的嵌入式系统,如基于Windows CE的...

    把真彩色BMP位图转化为二维数组

    ### 把真彩色BMP位图转化为二维数组 在计算机编程与图像处理领域,将BMP格式的位图转换为二维数组是一项非常实用的技术。这种技术不仅能够帮助开发者更好地理解和操作图像数据,还在诸如机器人视觉识别等应用中扮演...

    android 画图 bitmap drawable canvas paint

    在Android平台上,绘制图形是一项基本任务,涉及到多个关键类,如Bitmap、Drawable和Canvas,以及Paint。这些类共同构成了Android图形系统的核心,使得开发者能够创建丰富的用户界面和自定义视图。 首先,Bitmap是...

    Android图片Bitmap和字符串String之间的相互转换

    本篇文章将深入探讨如何在Android中进行Bitmap与String之间的转换,以及这些转换在实际应用中的场景。 首先,我们要理解Bitmap与String转换的原理。Bitmap是Android系统中用来表示图像的类,它包含了图像的所有像素...

    Bitmap,BitmapDrawable,Drawable.doc

    在深入探讨Bitmap、BitmapDrawable与Drawable之间的关系以及它们之间的转换之前,我们首先需要明确这三种类型的基本概念和各自的功能。 ### Drawable Drawable是Android中一个非常基础且重要的接口,它代表了可以...

    Delphi bmp图片转RGB byte方法

    本文将深入探讨一个在 Delphi 开发环境中使用的函数,该函数用于将 BMP 图像格式转换为 RGB Byte 数组。通过此函数,我们可以方便地处理图像数据,进行各种图像处理任务,如颜色变换、图像识别等。 #### 函数定义与...

Global site tag (gtag.js) - Google Analytics