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               InputStream is = new ByteArrayInputStream(baos.toByteArray());
  6               return is;
  7           }
  8
  9           // 将Bitmap转换成InputStream
 10           public InputStream Bitmap2InputStream(Bitmap bm) {
 11               ByteArrayOutputStream baos = new ByteArrayOutputStream();
 12               bm.compress(Bitmap.CompressFormat.JPEG, 100, baos);
 13               InputStream is = new ByteArrayInputStream(baos.toByteArray());
 14               return is;
 15           }
 16
 17           // 将InputStream转换成Bitmap
 18           public Bitmap InputStream2Bitmap(InputStream is) {
 19               return BitmapFactory.decodeStream(is);
 20           }
 21
 22           // Drawable转换成InputStream
 23           public InputStream Drawable2InputStream(Drawable d) {
 24               Bitmap bitmap = this.drawable2Bitmap(d);
 25               return this.Bitmap2InputStream(bitmap);
 26           }
 27
 28           // InputStream转换成Drawable
 29           public Drawable InputStream2Drawable(InputStream is) {
 30               Bitmap bitmap = this.InputStream2Bitmap(is);
 31               return this.bitmap2Drawable(bitmap);
 32           }
 33
 34           // Drawable转换成byte[]
 35           public byte[] Drawable2Bytes(Drawable d) {
 36               Bitmap bitmap = this.drawable2Bitmap(d);
 37               return this.Bitmap2Bytes(bitmap);
 38           }
 39
 40           // byte[]转换成Drawable
 41           public Drawable Bytes2Drawable(byte[] b) {
 42               Bitmap bitmap = this.Bytes2Bitmap(b);
 43               return this.bitmap2Drawable(bitmap);
 44           }
 45
 46           // Bitmap转换成byte[]
 47           public byte[] Bitmap2Bytes(Bitmap bm) {
 48               ByteArrayOutputStream baos = new ByteArrayOutputStream();
 49               bm.compress(Bitmap.CompressFormat.PNG, 100, baos);
 50               return baos.toByteArray();
 51           }
 52
 53           // byte[]转换成Bitmap
 54           public Bitmap Bytes2Bitmap(byte[] b) {
 55               if (b.length !=   0) {
 56                   return BitmapFactory.decodeByteArray(b,   0, b.length);
 57               }
 58               return null;
 59           }
 60
 61           // 将byte[]转换成InputStream
 62           public InputStream Byte2InputStream(byte[] b) {
 63               ByteArrayInputStream bais = new ByteArrayInputStream(b);
 64               return bais;
 65           }
 66
 67           // 将InputStream转换成byte[]
 68           public byte[] InputStream2Bytes(InputStream is) {
 69               String str = "";
 70               byte[] readByte = new byte[1024];
 71               int readCount = -  1;
 72               try {
 73                   while ((readCount = is.read(readByte,   0, 1024)) != -  1) {
 74                       str += new String(readByte).trim();
 75                   }
 76                   return str.getBytes();
 77               } catch (Exception e) {
 78                   e.printStackTrace();
 79               }
 80               return null;
 81           }
 82
 83           // Drawable转换成Bitmap
 84           public Bitmap drawable2Bitmap(Drawable drawable) {
 85               Bitmap bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(),
 86                       drawable.getIntrinsicHeight(), drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888 : Bitmap.Config.RGB_565);
 87               Canvas canvas = new Canvas(bitmap);
 88               drawable.setBounds(  0,   0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
 89               drawable.draw(canvas);
 90               return bitmap;
 91           }
 92
 93           // Bitmap转换成Drawable
 94           public Drawable bitmap2Drawable(Bitmap bitmap) {
 95               BitmapDrawable bd = new BitmapDrawable(bitmap);
 96               Drawable d = (Drawable) bd;
 97               return d;
 98           }
 99
100           //将Bitmap转换成Base64
101           public  String getImgStr(Bitmap bit){
102              ByteArrayOutputStream bos=new ByteArrayOutputStream();
103              bit.compress(CompressFormat.JPEG,  100, bos);//参数100表示不压缩
104              byte[] bytes=bos.toByteArray();
105              return Base64.encodeToString(bytes, Base64.DEFAULT);
106           }
107
108           //将Base64转换成bitmap
109           public  Bitmap getimg(String str){
110               byte[] bytes;
111               bytes=Base64.decode(str,   0);
112               return BitmapFactory.decodeByteArray(bytes,   0, bytes.length);
113           }   

最近遇到比较多的转换关系,所以就整理下贴出来与大家分享咯。。。

时间: 2024-10-10 04:22:14

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

Android中Bitmap, Drawable, Byte,ID之间的转化

Android中Bitmap, Drawable, Byte,ID之间的转化 1.  Bitmap 转化为 byte ByteArrayOutputStream out = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.PNG, 100, out); byte[] array= out.toByteArray(); 2. byte转化为bitmap Bitmap bitmap = BitmapFactory.

如何在String和Byte[]对象之间进行转换

分析问题 字符串和字节数组之间的转换,事实上代表了现实世界信息和数字世界信息之间的转换,要理解其中的机制,需要先了解一下几个概念. 1.比特. 比特(bit)是指一个位,它可以说是计算机内物理保存的最近本单元.现在的计算机体系采用二进制逻辑,即一个基本单元可以保存两种数值:0和1.这是因为0.1机制可以用多种物理系统来表示,例如高电平和低电平.二极管的导通和关闭.磁场的正极和负极等.总之,一个比特就是一个二进制位. 2.字节. 一个字节(byte),在C#中是由8个比特来构成的.它的值可以有一个

android bitmap和base64之间的转换

实现手写图片,将图片转化为字符串以及字符串转化为图片,减小发送内容大小 <pre name="code" class="java"> /** * bitmap转为base64 * @param bitmap * @return */ public static String bitmapToBase64(Bitmap bitmap) { String result = null; ByteArrayOutputStream baos = null; tr

InputStream,BufferedImage与byte数组之间的转换

需要获取网络的一张图片,但是某种需要,要把获取的这段流输入换为BufferedImage流,有的地方还需要转换为byte[]. 获得图片地址,获得了一个图片输入流,例如:    Url img = new  URL(url);   InputStream in = img.openStream(); 接着把输入流转为BufferedImage:    JPEGImageDecoder decoderFile = JPEGCodec.createJPEGDecoder(in);   Buffere

InputStream,String和Reader之间的转换

1.String –> InputStreamInputStrem is = new ByteArrayInputStream(str.getBytes());orByteArrayInputStream stream= new ByteArrayInputStream(str.getBytes());  2.InputStream–>String inputStream input; StringBuffer out = new StringBuffer();     byte[] b =

C# string byte[] Base64 常用互相转换

参考: http://www.cnblogs.com/zxx193/p/3605238.html?utm_source=tuicool http://www.cnblogs.com/freeliver54/p/3430956.html http://www.cnblogs.com/simhare/archive/2007/07/18/821938.html 定义string变量为str,内存流变量为ms,比特数组为bt 1.字符串=>比特数组 (1)byte[] bt=System.Text.E

java整型数与网络字节序的 byte[] 数组转换关系

java整型数与网络字节序的 byte[] 数组转换关系 工作项目需要在java和c/c++之间进行socket通信,socket通信是以字节流或者字节包进行的,socket发送方须将数据转换为字节流或者字节包,而接收方则将字节流和字节包再转换回相应的数据类型.如果发送方和接收方都是同种语言,则一般只涉及到字节序的调整.而对于java和c/c++的通信,则情况就要复杂一些,主要是因为java中没有unsigned类型,并且java和c在某些数据类型上的长度不一致. 本文就是针对这种情况,整理了j

Android开发中dp,sp和px之间的转换

本文转载于 http://blog.csdn.net/student9128/article/details/53932470 众所周知,在Android开发中dp和px,sp和px之间的转换时必不可少的,下面将转换的代码记录下来: 1 public class DisplayUtils { 2 /** 3 * convert px to its equivalent dp 4 * 5 * 将px转换为与之相等的dp 6 */ 7 public static int px2dp(Context

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

package com.soai.imdemo; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.InputStream; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.grap