将本地图片文件转成Base64编码、InputStream、BufferedImage等流对象。
工具/原料
Eclipse
依赖的jar包:sun.misc.BASE64Decoder.jar
方法/步骤
1、将本地图片文件转成Base64字符串,需要一个参数:本地图片路径publicstaticStringGetImageStr(StringimgFilePath){//将图片文件转化为字节数组字符串,并对其进行Base64编码处理byte[]data=null;//读取图片字节数组try{InputStreamin=newFileInputStream(imgFilePath);data=newbyte[in.available()];in.read(data);in.close();}catch(IOExceptione){e.printStackTrace();}//对字节数组Base64编码BASE64Encoderencoder=newBASE64Encoder();returnencoder.encode(data);//返回Base64编码过的字节数组字符串}
2、本地图片转成InputStream流对象。需要一个参数,base64编码的字符串,可由步骤一得到。publicstaticInputStreamBaseToInputStream(Stringbase64string){ ByteArrayInputStreamstream=null; try{ BASE64Decoderdecoder=newBASE64Decoder(); byte[]bytes1=decoder.decodeBuffer(base64string); stream=newByteArrayInputStream(bytes1); }catch(Exceptione){ //TODO:handleexception }returnstream;}
3、本地图片转成BufferedImage流对象。需要一个参数,base64编码的字符串,可由步骤一得到。publicstaticBufferedImageGetBufferedImage(Stringbase64string){ BufferedImageimage=null; try{ InputStreamstream=BaseToInputStream(base64string); image=ImageIO.read(stream); System.out.println(">>>"+image.getWidth()+","+image.getHeight()+"<<<"); }catch(IOExceptione){ e.printStackTrace(); } returnimage;}
4、将Base64String转成图片文件,需要两个参数:参数一:Base64编码的字符串,参数二:图片文件保存的路径。publicstaticbooleanGenerateImage(StringimgStr,StringimgFilePath){//对字节数组字符串进行Base64解码并生成图片if(imgStr==null)//图像数据为空returnfalse;BASE64Decoderdecoder=newBASE64Decoder();try{//Base64解码byte[]bytes=decoder.decodeBuffer(imgStr);for(inti=0;i<bytes.length;++i){if(bytes[i]<0){//调整异常数据bytes[i]+=256;}}//生成jpeg图片OutputStreamout=newFileOutputStream(imgFilePath);out.write(bytes);out.flush();out.close();returntrue;}catch(Exceptione){returnfalse;}}