这里给出两种方式:以字节数组为例和以Base64编码字符串为例。
- 将生成的图片转换成字节数组,然后将其作为响应体返回给前端:
@GetMapping("/image")
public ResponseEntity<byte[]> getImage() throws IOException {
// 生成图片逻辑
BufferedImage image = generateImage();
// 将BufferedImage转换为字节数组
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
ImageIO.write(image, "png", outputStream);
byte[] bytes = outputStream.toByteArray();
// 返回ResponseEntity<byte[]>类型的响应体
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.IMAGE_PNG);
return new ResponseEntity<>(bytes, headers, HttpStatus.OK);
}
- 将生成的图片转换成Base64编码字符串,然后将其作为响应体返回给前端:
@GetMapping("/image")
public ResponseEntity<String> getImage() throws IOException {
// 生成图片逻辑
BufferedImage image = generateImage();
// 将BufferedImage转换为Base64编码字符串
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
ImageIO.write(image, "png", outputStream);
String base64Image = Base64.getEncoder().encodeToString(outputStream.toByteArray());
// 返回ResponseEntity<String>类型的响应体
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.TEXT_PLAIN);
return new ResponseEntity<>(base64Image, headers, HttpStatus.OK);
}
注意:在以上代码中,generateImage()方法表示生成图片的逻辑,需要根据实际情况进行实现。同时需要在类上添加@RestController
或者@Controller
注解,以及在方法上添加@GetMapping("/image")
注解,以表示请求映射路径。