javaXML方式传输图片

来源:互联网 发布:java中文api手机 编辑:程序博客网 时间:2024/06/04 00:58

1.把图片读到byte[] 流

2.把byte[]流转为BASE64编码(即是一堆字符串),把字符串放到XML里,图片就可以随着xml传输了。

3.把xml里的BASE64编码解码为byte[]流,把再输出为图片。

 

java 实现base64与byte[]相互转换:

import sun.misc.BASE64Decoder;//将base64转换为byte[]
import sun.misc.BASE64Encoder;//转byet[]换为base64
public class Test { 
public static void main(String args[]) throws IOException 

//定义一个BASE64Encoder 
BASE64Encoder encode = new BASE64Encoder(); 
//将byte[]转换为base64
String base64 = encode.encode("五笔字型电子计算机".getBytes()); 
//输出base64
System.out.println(base64); 
//新建一个BASE64Decoder 
BASE64Decoder decode = new BASE64Decoder(); 
//将base64转换为byte[]
byte[] b = decode.decodeBuffer(base64); 
//输出转换后的byte[]
System.out.println(new String(b)); }
}

 

//把图片转成BASE64编码

import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.imageio.ImageIO;

import sun.misc.BASE64Encoder;

public class TestImageToBase64{  
 
  //实例化 处理BASE64Encoder对象
  static BASE64Encoder encoder = new sun.misc.BASE64Encoder();   
   
  /*
   * 得到指定图片的base64编码
   */
  public  static String getImageBinary(){   
     File f = new File("d://a.jpg");          
     BufferedImage bi;   
     try {   
          bi = ImageIO.read(f);   
          ByteArrayOutputStream baos = new ByteArrayOutputStream();   
          ImageIO.write(bi, "jpg", baos);   
          byte[] bytes = baos.toByteArray();   
              
          return encoder.encodeBuffer(bytes).trim();   
       } catch (IOException e) {   
          e.printStackTrace();   
       }   
       return null;   
  } 
 
  /**
     *@param args
     *@throws IOException*/
   public static void main(String[] args)throws IOException{
    //得到图片的base64编码
    String abc = getImageBinary();
    //去掉得到的base64编码的换行符号
    Pattern p = Pattern.compile("\\s*|\t|\r|\n");
    Matcher m = p.matcher(abc); 
    String after = m.replaceAll(""); 
    //打印去掉换行符号base64编码
    System.out.println(after); 
    
    }

}

 

 

//把图片的BASE64编码还原为图片:

import java.io.File;

import java.io.FileOutputStream;

import java.io.IOException;

import sun.misc.BASE64Decoder;

public class CodeTest {

public static void main(String[] args) throws IOException {

//str 为一图片的BASE64编码

String str = "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";

 BASE64Decoder decoder=new BASE64Decoder();

 byte[] bytes=decoder.decodeBuffer(str);

File file=new File("D:/a.jpeg");

 FileOutputStream fos=new FileOutputStream(file);

fos.write(bytes);

 fos.flush();

 fos.close();

 }

0 0
原创粉丝点击