Android Bitmap与DrawAble与byte[]与InputStream之间的转换工具类【转】

  1. package com.soai.imdemo;
  2. import java.io.ByteArrayInputStream;
  3. import java.io.ByteArrayOutputStream;
  4. import java.io.InputStream;
  5. import android.graphics.Bitmap;
  6. import android.graphics.BitmapFactory;
  7. import android.graphics.Canvas;
  8. import android.graphics.PixelFormat;
  9. import android.graphics.drawable.BitmapDrawable;
  10. import android.graphics.drawable.Drawable;
  11. /**
  12. * Bitmap与DrawAble与byte[]与InputStream之间的转换工具类
  13. * @author Administrator
  14. *
  15. */
  16. public class FormatTools {
  17. private static FormatTools tools = new FormatTools();
  18. public static FormatTools getInstance() {
  19. if (tools == null) {
  20. tools = new FormatTools();
  21. return tools;
  22. }
  23. return tools;
  24. }
  25. // 将byte[]转换成InputStream
  26. public InputStream Byte2InputStream(byte[] b) {
  27. ByteArrayInputStream bais = new ByteArrayInputStream(b);
  28. return bais;
  29. }
  30. // 将InputStream转换成byte[]
  31. public byte[] InputStream2Bytes(InputStream is) {
  32. String str = "";
  33. byte[] readByte = new byte[1024];
  34. int readCount = -1;
  35. try {
  36. while ((readCount = is.read(readByte, 0, 1024)) != -1) {
  37. str += new String(readByte).trim();
  38. }
  39. return str.getBytes();
  40. } catch (Exception e) {
  41. e.printStackTrace();
  42. }
  43. return null;
  44. }
  45. // 将Bitmap转换成InputStream
  46. public InputStream Bitmap2InputStream(Bitmap bm) {
  47. ByteArrayOutputStream baos = new ByteArrayOutputStream();
  48. bm.compress(Bitmap.CompressFormat.JPEG, 100, baos);
  49. InputStream is = new ByteArrayInputStream(baos.toByteArray());
  50. return is;
  51. }
  52. // 将Bitmap转换成InputStream
  53. public InputStream Bitmap2InputStream(Bitmap bm, int quality) {
  54. ByteArrayOutputStream baos = new ByteArrayOutputStream();
  55. bm.compress(Bitmap.CompressFormat.PNG, quality, baos);
  56. InputStream is = new ByteArrayInputStream(baos.toByteArray());
  57. return is;
  58. }
  59. // 将InputStream转换成Bitmap
  60. public Bitmap InputStream2Bitmap(InputStream is) {
  61. return BitmapFactory.decodeStream(is);
  62. }
  63. // Drawable转换成InputStream
  64. public InputStream Drawable2InputStream(Drawable d) {
  65. Bitmap bitmap = this.drawable2Bitmap(d);
  66. return this.Bitmap2InputStream(bitmap);
  67. }
  68. // InputStream转换成Drawable
  69. public Drawable InputStream2Drawable(InputStream is) {
  70. Bitmap bitmap = this.InputStream2Bitmap(is);
  71. return this.bitmap2Drawable(bitmap);
  72. }
  73. // Drawable转换成byte[]
  74. public byte[] Drawable2Bytes(Drawable d) {
  75. Bitmap bitmap = this.drawable2Bitmap(d);
  76. return this.Bitmap2Bytes(bitmap);
  77. }
  78. // byte[]转换成Drawable
  79. public Drawable Bytes2Drawable(byte[] b) {
  80. Bitmap bitmap = this.Bytes2Bitmap(b);
  81. return this.bitmap2Drawable(bitmap);
  82. }
  83. // Bitmap转换成byte[]
  84. public byte[] Bitmap2Bytes(Bitmap bm) {
  85. ByteArrayOutputStream baos = new ByteArrayOutputStream();
  86. bm.compress(Bitmap.CompressFormat.PNG, 100, baos);
  87. return baos.toByteArray();
  88. }
  89. // byte[]转换成Bitmap
  90. public Bitmap Bytes2Bitmap(byte[] b) {
  91. if (b.length != 0) {
  92. return BitmapFactory.decodeByteArray(b, 0, b.length);
  93. }
  94. return null;
  95. }
  96. // Drawable转换成Bitmap
  97. public Bitmap drawable2Bitmap(Drawable drawable) {
  98. Bitmap bitmap = Bitmap
  99. .createBitmap(
  100. drawable.getIntrinsicWidth(),
  101. drawable.getIntrinsicHeight(),
  102. drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888
  103. : Bitmap.Config.RGB_565);
  104. Canvas canvas = new Canvas(bitmap);
  105. drawable.setBounds(0, 0, drawable.getIntrinsicWidth(),
  106. drawable.getIntrinsicHeight());
  107. drawable.draw(canvas);
  108. return bitmap;
  109. }
  110. // Bitmap转换成Drawable
  111. public Drawable bitmap2Drawable(Bitmap bitmap) {
  112. BitmapDrawable bd = new BitmapDrawable(bitmap);
  113. Drawable d = (Drawable) bd;
  114. return d;
  115. }
  116. }
时间: 2024-12-11 18:20:34

Android Bitmap与DrawAble与byte[]与InputStream之间的转换工具类【转】的相关文章

android那些事之Bitmap、InputStream、Drawable、byte[]、Base64之间的转换关系

1 // 将Bitmap转换成InputStream(压缩率quality.100表示不压缩.10表示压缩90%) 2 public InputStream Bitmap2InputStream(Bitmap bm, int quality) { 3 ByteArrayOutputStream baos = new ByteArrayOutputStream(); 4 bm.compress(Bitmap.CompressFormat.PNG, quality, baos); 5 InputSt

Android单位转换 (px、dp、sp之间的转换工具类)

在Android开发中,涉及到屏幕视频问题的时候,px.dp.sp之间的转换比较重要的一部分,所以杨哥整理了一个工具类给大伙用. package com.zw.express.tool; import android.content.Context;import android.util.DisplayMetrics;/** * ydc * @author Administrator * */public class DensityUtils { /**     * 根据手机的分辨率从 dip

(转)Android中px与dip,sp与dip等的转换工具类

功能 通常在代码中设置组件或文字大小只能用px,通过这个工具类我们可以把dip(dp)或sp为单位的值转换为以px为单位的值而保证大小不变.方法中的参数请参考http://www.cnblogs.com/wader2011/archive/2011/11/28/2266669.html 代码 /** * Android大小单位转换工具类 *  * @author wader *  */public class DisplayUtil { /**  * 将px值转换为dip或dp值,保证尺寸大小不

Android 图片Bitmap,drawable,res资源图片之间转换

一.知识介绍 ①res资源图片是放在项目res文件下的资源图片 ②BitMap位图,一般文件后缀为BMP,需要编码器编码,如RGB565,RGB8888等.一种逐像素的显示对象,其执行效率高,但缺点也很明显,存储效率低. ③Drawable,通用的图形对象,它可以装载常用的图像,GIF,PNG,JPG,也支持BMP,提供一些高级的可视化的对象,如渐变,图形等. 二.项目案例 [步骤] ①将图片放入res/drawable文件夹中,这里面的图片属于res资源图片 ②将图片处理定义成工具类,方便使用

Android学习笔记二十.使用ContentProvider实现数据共享(二).URI...工具类

一.UriMatcher与ContentUris工具类 UriMatcher 1.功能概述 开发ContentProvider时所实现的query().insert().delete().update()方法的第一个参数为Uri参数,该参数由ContentResolver调用这些方法时传入.在上一篇博文中的实例,并没有真正对数据进行操作,因此ContentProvider并未对Uri参数进行任何判断.所以为了确定该ContentProvider实际能处理的Uri,以确定每个方法中Uri参数所操作

C# 对象、文件与二进制串(byte数组)之间的转换

1.关于本文 在使用C#下的TCP(类TcpClient).UDP(类UdpClient)协议传输信息时,都需要将信息转换为byte类型的数组进行发送.本文实现了两种object与byte数组的转换和一种文件与byte数组转换的方式.基础类型的数据,可以用BitConverter类中的函数进行转换. 2.object与byte[]的相互转换:使用IFormatter的Serialize和Deserialize进行序列化与反序列化 实现这个功能,需要先引用三个命名空间:System.IO.Syst

Android初级教程:对文件和字符串进行MD5加密工具类

转载请注明出处:http://blog.csdn.net/qq_32059827/article/details/52200008   点击打开链接 之前写过一篇博文,是针对字符串进行md5加密的.今天对其进行改进,加入针对某个文件,进行md5加密,并获取加密后的值.并把两个功能封装成了工具类,如果有需要这个算法的,可直接使用. 直接上算法封装的工具类代码: package com.itydl.utils; import java.io.File; import java.io.FileInpu

c#中的char byte string 类型之间的转换

byte 是字节型,字节,就是储存数据的一种单位而已,一般用于二进制文件的读写.char 是字符型,字符,就是单个的字母.数字.符号等等.string 是字符串型,字符串,就是若干个字符. 而且 byte[] 和 char[] 都是数组类型,string 是变量类型,三者没法直接比较.要么是 byte[].char[].string[],要么 byte.char.string. 如果要定义一个字符串变量,那么应该用 string:如果是一个字符串数组,那么应该用 string[]. 1. byt

Delphi Byte与数据类型之间的转换

procedure TForm1.FormCreate(Sender: TObject);type    TByteArr = array [0..1] of Byte;    PByteArr = ^TByteArr;var  Bytes: TBytes;  buf,buf2: TByteArr;  cmd,n_10: string;  Len: Integer;  c: char;  n_int:ushort;  w:Word;  {Ushort : word} begin    cmd:=