1. 引入pom.xml依赖
<dependency>
<groupId>net.sf.jmimemagic</groupId>
<artifactId>jmimemagic</artifactId>
<version>0.1.4</version>
</dependency>
2. 修改后端接口
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
ImageIO.write(bufferedImage, "PNG", byteArrayOutputStream);
try {
//无论何种形式,最终转为byte[]
byte[] data = byteArrayOutputStream.toByteArray();
MagicMatch match = Magic.getMagicMatch(data);
String mimeType = match.getMimeType();
HttpServletResponse response = request.getResponse();
// 设置响应的类型格式为图片格式
response.setContentType(mimeType);
// 禁止图像缓存。
response.setHeader("Pragma", "no-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
BufferedOutputStream bos = new BufferedOutputStream(response.getOutputStream());
bos.write(data);
byteArrayOutputStream.close();
bos.close();
} catch (Exception e) {
e.printStackTrace();
}
友情提示: jmimemagic包 做项目打成jar包时, 不能放在中文路径下, 会报错!!!
net.sf.jmimemagic.MagicParseException: parse error occurred - Opaque part contains invalid character: ²â
at net.sf.jmimemagic.MagicParser.initialize(MagicParser.java:187)
at net.sf.jmimemagic.Magic.initialize(Magic.java:92)
at net.sf.jmimemagic.Magic.getMagicMatch(Magic.java:193)
at net.sf.jmimemagic.Magic.getMagicMatch(Magic.java:172)
at com.topsoft.service.validate.processor.ImageCodeProcessor.send(ImageCodeProcessor.java:56)
at com.topsoft.service.validate.processor.BaseDefaultValidateCodeProcessor.generate(BaseDefaultValidateCodeProcessor.java:29)
at com.topsoft.web.ValidateCodeController.imageCode(ValidateCodeController.java:39)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)
参考:
https://blog.csdn.net/zsl471260400/article/details/52882877#commentBox