gpt4 book ai didi

java - 使用jsp向浏览器显示动态生成的图像

转载 作者:行者123 更新时间:2023-11-28 02:44:01 36 4
gpt4 key购买 nike

我正在使用 jsp/servlets 做一个带有图像的小项目。因为我动态生成一些图像(实际上我会将两个图像共享解密为一个)。解密后的图像必须直接显示给浏览器而不将其保存为文件在文件系统中。

Crypting c=new Crypting();
BufferedImage imgKey;
BufferedImage imgEnc;
imgKey = ImageIO.read(new File("E:/Netbeans Projects/banking/web/Key.png"));
imgEnc=ImageIO.read(new File("E:/Netbeans Projects/banking/build/web/upload/E.png"));
BufferedImage imgDec=Crypting.decryptImage(imgKey,imgEnc);

当我将它存储在文件系统中并使用 <img> 显示它时它不显示图像。重新加载时它显示图像。所以这是 IDE 后端工作的问题。任何帮助请...

最佳答案

  1. 制作一个 servlet 来生成图像。
  2. 使用带有属性 src 的 html img 标签作为您生成的资源的路径。

spring boot 中的示例(二维码)。小服务程序

public class QRCodeServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String url = req.getParameter("url");
String format = req.getParameter("format");
QRCodeFormat formatParam = StringUtils.isNotEmpty(format) && format.equalsIgnoreCase("PDF") ?
QRCodeFormat.PDF : QRCodeFormat.JPG;

if(formatParam.equals(QRCodeFormat.PDF))
resp.setContentType("application/pdf");
else
resp.setContentType("image/jpeg");

if(StringUtils.isNotBlank(url)) {
ByteArrayOutputStream stream = QRCodeService.getQRCodeFromUrl(url, formatParam);
stream.writeTo(resp.getOutputStream());
}
}
}

配置:

@Configuration
public class WebMvcConfig {
@Bean
public ServletRegistrationBean qrCodeServletRegistrationBean(){
ServletRegistrationBean qrCodeBean =
new ServletRegistrationBean(new QRCodeServlet(), "/qrcode");
qrCodeBean.setLoadOnStartup(1);
return qrCodeBean;
}
}

Controller :

String qrcodeServletPrefix = "http://localhost:8082/qrcode?url="

String encodedUrl = URLEncoder.encode("http://exmaple.com?param1=value1&param2=value2", "UTF-8");
modelAndView.addObject("qrcodepage", qrcodeServletPrefix + encodedUrl);
modelAndView.setViewName("view");

View .jsp

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<img src="<c:url value='${qrcodepage}'/>" />

关于java - 使用jsp向浏览器显示动态生成的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42332603/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com