您的位置:首页 > 移动开发 > Android开发

base64(Bitmap和base64的互换)

2016-03-11 10:27 344 查看
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