1.java部分:
@GetMapping("/downLoadWarrantyOrderImage")
public String downLoadWarrantyOrderImage(String phone, HttpServletResponse response) throws IOException {
//从数据库查询出数据
WarrantyOrderVo byPhone = warrantyOrderService.getByPhone(phone);
//将数据填充到html字符串中 ,然后将html代码转换为图片 , 注意
//这里是该项目业务需要,用任意的图片都跨域
HtmlImageGenerator imageGenerator = new HtmlImageGenerator();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String createTime = formatter.format(byPhone.getCreateTime());
String htmlTemplate = new WarrantyOrder().init(byPhone.getCode(),
byPhone.getName(),
byPhone.getAddress(),
byPhone.getPhone(),
createTime,
byPhone.getServiceOrderCode());
imageGenerator.loadHtml(htmlTemplate);
//生成图片,将图片转为base64格式返回
BufferedImage bufferedImage = imageGenerator.getBufferedImage();
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
ImageIO.write(bufferedImage,"png",byteArrayOutputStream);
byte[] imageBytes = byteArrayOutputStream.toByteArray(); // 读取图片数据的字节数组
// 将图片字节数组转换为Base64编码的字符串
String base64Image = Base64.getEncoder().encodeToString(imageBytes);
return base64Image;
}
2.uniapp 部分:
注意 如果返回的是blob格式的图片 , 需要设置 responseType:'arraybuffer' , base64则不需要
uni.request({
url: '...',
data: {
...
},
success: (res) => {
let imageUrl =res.data
imgSrc.value='data:image/png;base64,'+imageUrl
}
})