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));
- }
- }
例子2:图片和BASE64的转换
- RGFycmVu
- Darren
- 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();
- }
- }