亲测3个请求都可用,没有测试性能问题。仅供参考
BASE64Decoder Eclipsse 类可能引用不了
解决方案链接:http://blog.csdn.net/JBxiaozi/article/details/7351768
3 import java.awt.image.BufferedImage; 4 import java.io.FileInputStream; 5 import java.io.IOException; 6 import java.io.InputStream; 7 import java.io.OutputStream; 8 import javax.imageio.ImageIO; 9 import javax.servlet.http.HttpServletResponse; 10 import org.springframework.stereotype.Controller; 11 import org.springframework.web.bind.annotation.RequestMapping; 12 import sun.misc.BASE64Decoder; 13 import sun.misc.BASE64Encoder; 14 15 @Controller 16 @RequestMapping("/imgs/") 17 public class test { 18 19 @RequestMapping("test") 20 public void test(HttpServletResponse response) throws IOException { 21 //写给浏览器 22 response.setContentType("image/jpeg"); 23 //浏览器不要缓存 24 response.setDateHeader("expries", -1); 25 response.setHeader("Cache-Control", "no-cache"); 26 response.setHeader("Pragma", "no-cache"); 27 BufferedImage buffImg = ImageIO.read(new FileInputStream("g://timg.jpg")); 28 ImageIO.write(buffImg, "jpg", response.getOutputStream()); 29 } 30 @RequestMapping("test1") 31 public void test1(HttpServletResponse response) throws IOException { 32 try { 33 response.setContentType("image/jpeg"); 34 OutputStream toClient = response.getOutputStream(); 35 String xmlImg = GetImageStr("g://timg.jpg"); 36 GenerateImage(xmlImg, toClient); 37 } catch (Exception ex) { 38 System.out.println(ex.toString()); 39 } 40 } 41 42 @RequestMapping("test2") 43 public void test2(HttpServletResponse response) throws IOException { 44 try { 45 response.setContentType("text/html"); 46 String xmlImg = GetImageStr("g://timg.jpg"); 47 System.out.println(xmlImg); 48 response.getWriter().write("<html><body><img src='data:image/jpeg;base64,"+xmlImg+"'/></body></html>"); 49 } catch (Exception ex) { 50 System.out.println(ex.toString()); 51 } 52 } 53 54 public static boolean GenerateImage(String imgStr, OutputStream out) { 55 if (imgStr == null) // 图像数据为空 56 return false; 57 BASE64Decoder decoder = new BASE64Decoder(); 58 try { 59 // Base64解码 60 byte[] b = decoder.decodeBuffer(imgStr); 61 for (int i = 0; i < b.length; ++i) { 62 if (b[i] < 0) { 63 b[i] += 256; 64 } 65 } 66 67 out.write(b); 68 out.flush(); 69 out.close(); 70 return true; 71 } catch (Exception e) { 72 return false; 73 } 74 } 75 76 public static String GetImageStr(String imgFilePath) { 77 // 将图片文件转化为字节数组字符串,并对其进行Base64编码处理 78 byte[] data = null; 79 80 // 读取图片字节数组 81 try { 82 InputStream in = new FileInputStream(imgFilePath); 83 data = new byte[in.available()]; 84 in.read(data); 85 in.close(); 86 } catch (IOException e) { 87 e.printStackTrace(); 88 } 89 90 // 对字节数组Base64编码 91 BASE64Encoder encoder = new BASE64Encoder(); 92 return encoder.encode(data);//返回字符串 93 } 94 }