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 }
最近遇到比较多的转换关系,所以就整理下贴出来与大家分享咯。。。
经验的积累在于平时的点滴、