base64(Bitmap和base64的互换)

Base64的解释:

Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,大家可以查看RFC2045~RFC2049,上面有MIME的详细规范。Base64编码可用于在HTTP环境下传递较长的标识信息。例如,在Java Persistence系统Hibernate中,就采用了Base64来将一个较长的唯一标识符(一般为128-bit的UUID)编码为一个字符串,用作HTTP表单和HTTP GET URL中的参数。在其他应用程序中,也常常需要把二进制数据编码为适合放在URL(包括隐藏表单域)中的形式。此时,采用Base64编码具有不可读性,即所编码的数据不会被人用肉眼所直接看到。

 public static String imgToBase64(String imgPath, Bitmap bitmap,String imgFormat) {  
20.	        if (imgPath !=null && imgPath.length() > 0) {  
21.	            bitmap = readBitmap(imgPath);  
22.	        }  
23.	        if(bitmap == null){  
24.	            //bitmap not found!!  
25.	        }  
26.	        ByteArrayOutputStream out = null;  
27.	        try {  
28.	            out = new ByteArrayOutputStream();  
//压缩
29.	            bitmap.compress(Bitmap.CompressFormat.JPEG, 100, out);  
30.	  
31.	            out.flush();  
32.	            out.close();  
33.	  
34.	            byte[] imgBytes = out.toByteArray();  
35.	            return Base64.encodeToString(imgBytes, Base64.DEFAULT);  
36.	        } catch (Exception e) {  
37.	            // TODO Auto-generated catch block  
38.	            return null;  
39.	        } finally {  
40.	            try {  
41.	                out.flush();  
42.	                out.close();  
43.	            } catch (IOException e) {  
44.	                // TODO Auto-generated catch block  
45.	                e.printStackTrace();  
46.	            }  
47.	        }  
48.	    }  
49.	  //根据图片路径获得bitmap
50.	    private static Bitmap readBitmap(String imgPath) {  
51.	        try {  
52.	            return BitmapFactory.decodeFile(imgPath);  
53.	        } catch (Exception e) {  
54.	            // TODO Auto-generated catch block  
55.	            return null;  
56.	        }  
57.	  
58.	    }  
59.	  
60.	    /** 
61.	     *  
62.	     * @param base64Data 
63.	     * @param imgName 
64.	     * @param imgFormat 图片格式 
65.	     */  
66.	    public static void base64ToBitmap(String base64Data,String imgName,String imgFormat) {  
67.	        byte[] bytes = Base64.decode(base64Data, Base64.DEFAULT);  
68.	        Bitmap bitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);  
69.	  
70.	        File myCaptureFile = new File("/sdcard/", imgName);  
71.	        FileOutputStream fos = null;  
72.	        try {  
73.	            fos = new FileOutputStream(myCaptureFile);  
74.	        } catch (FileNotFoundException e) {  
75.	            // TODO Auto-generated catch block  
76.	            e.printStackTrace();  
77.	        }  
78.	        boolean isTu = bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos);  
79.	        if (isTu) {  
80.	            // fos.notifyAll();  
81.	            try {  
82.	                fos.flush();  
83.	                fos.close();  
84.	            } catch (IOException e) {  
85.	                // TODO Auto-generated catch block  
86.	                e.printStackTrace();  
87.	            }  
88.	        } else {  
89.	            try {  
90.	                fos.close();  
91.	            } catch (IOException e) {  
92.	                // TODO Auto-generated catch block  
93.	                e.printStackTrace();  
94.	            }  
95.	        }  


你可能感兴趣的:(android,base64)