前言:有几天没写博客了,最近赶项目,还有好哥们的婚礼加在一起,实在是忙坏了。说起好哥们结婚,就想多说几句。想必大家和我一样,在学校时有那么几个臭味相投的哥们,不多也不算少,一起上课,吃饭,去图书馆(其实次数很少),打球,玩游戏,通宵,谈人生理想(其实就是瞎扯淡)等等,天天腻在一起,没心没肺,打打闹闹,直到毕业还觉得时间太少。所以就有这么一个约定:“”我结婚的时候你一定要来哦,这样我比较有安全感。。。“”,想吐就吐吧,别憋着。上次聚在一起是其中一个山东临沂的结婚,算算已经两年半了,当时我还在天津上班,离山东不太远,和天津的一个同学一起去一起回的,那时候毕业才两年,感触没那么深,就是觉得见面的机会越来越少。这次是连云港东海县的同学,三月一号通知的我们四月2号结婚,挺想他们,商量下时间就直接买票了。去了三天,说出来也不怕笑话,一号下午从成都走,四号凌晨回的成都,呆了三天,除了喝酒,在宾馆休息的时候就一起打王者荣耀,等车时候开小时房打,也吵架,说这不对说那不好的,玩得还挺开心,一点不觉得无聊。下个结婚的不知道是谁,希望快点。
不好意思扯得有点远了。
言归正传,项目中遇到图片上传的问题,需要将图片转换成Base64编码的字符集,服务器端自己处理。只知道java中有提供这个API,但是需要导入jar包,安卓中不知道有没有,也没用过,直接在Studio中打出Base64,有个Base64的类点进去看看,一看有decode,encode,还有编码字符串,不用说,就是它了。看看方法介绍就开始测试。下面把Base64这个类的介绍贴出来,这是andriod.util包下的,有兴趣的同学可以进去看看。
/* * Copyright (C) 2010 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.util; import java.io.UnsupportedEncodingException; /** * Utilities for encoding and decoding the Base64 representation of * binary data. See RFCs <a * href="http://www.ietf.org/rfc/rfc2045.txt">2045</a> and <a * href="http://www.ietf.org/rfc/rfc3548.txt">3548</a>. */ public class Base64 { 。。。。 }
这里我主要用到里面的两个方法,decode和encode,然后封装一下,便于重复使用。下面是我封装的代码,很简单,相信大家一看就明白,直接上代码。
将图片转换成Base64编码的字符串
/** * 将图片转换成Base64编码的字符串 * @param path * @return base64编码的字符串 */ public static String imageToBase64(String path){ if(TextUtils.isEmpty(path)){ return null; } InputStream is = null; byte[] data = null; String result = null; try{ is = new FileInputStream(path); //创建一个字符流大小的数组。 data = new byte[is.available()]; //写入数组 is.read(data); //用默认的编码格式进行编码 result = Base64.encodeToString(data,Base64.DEFAULT); }catch (IOException e){ e.printStackTrace(); }finally { if(null !=is){ try { is.close(); } catch (IOException e) { e.printStackTrace(); } } } return result; }
//base64编码字符集转化成图片文件
/** *base64编码字符集转化成图片文件。 * @param base64Str * @param path 文件存储路径 * @return 是否成功 */ public static boolean base64ToFile(String base64Str,String path){ byte[] data = Base64.decode(base64Str,Base64.DEFAULT); for (int i = 0; i < data.length; i++) { if(data[i] < 0){ //调整异常数据 data[i] += 256; } } OutputStream os = null; try { os = new FileOutputStream(path); os.write(data); os.flush(); os.close(); return true; } catch (FileNotFoundException e) { e.printStackTrace(); return false; }catch (IOException e){ e.printStackTrace(); return false; } }
好了,是不是很easy,今天的学习就结束了,谢谢大家支持。