2、把byte[]流转为BASE64编码(即是一堆字符串),把字符串放到XML里,图片就可以随着xml传输了。
3、把xml里的BASE64编码解码为byte[]流,把再输出为图片
例子1:简单字符串和BASE64转换
import java.io.IOException; import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder; public class TestBase64 { /** * @param args * @throws IOException */ public static void main(String[] args) throws IOException { // 定义一个BASE64Encoder BASE64Encoder encode = new BASE64Encoder(); // 将byte[]转换为base64 String base64 = encode.encode("Darren".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)); } }运行结果:
RGFycmVu Darren例子2:图片和BASE64的转换
import java.awt.image.BufferedImage; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.util.regex.Matcher; import java.util.regex.Pattern; import javax.imageio.ImageIO; import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder; public class TestImageBase64 { private static final BASE64Encoder encoder = new BASE64Encoder(); private static final BASE64Decoder decoder = new BASE64Decoder(); /** * @param args * @throws IOException */ public static void main(String[] args) throws IOException { // 得到图片的base64编码 String base64 = getImageBinary("F:/a.jpg","jpg"); // 去掉得到的base64编码的换行符号 Pattern p = Pattern.compile("\\s*|\t|\r|\n"); Matcher m = p.matcher(base64); String after = m.replaceAll(""); // 打印去掉换行符号base64编码 System.out.println(after); createImage(base64,"F:/b.jpg"); } /* * 得到指定图片的base64编码 */ public static String getImageBinary(String path,String suffix) throws IOException { File f = new File(path); BufferedImage bi = ImageIO.read(f); ByteArrayOutputStream baos = new ByteArrayOutputStream(); ImageIO.write(bi,suffix,baos); byte[] bytes = baos.toByteArray(); return encoder.encodeBuffer(bytes).trim(); } public static void createImage(String base64Source,String path) throws IOException { byte[] bytes = decoder.decodeBuffer(base64Source); File file = new File(path); FileOutputStream fos = new FileOutputStream(file); fos.write(bytes); fos.flush(); fos.close(); } }