gpt4 book ai didi

java逻辑帮助保存图像

转载 作者:行者123 更新时间:2023-12-01 17:36:52 24 4
gpt4 key购买 nike

我有一个词云应用程序,它根据用户输入的文本生成图像。生成的图像存储在 images 文件夹中。我提供了一个保存图像选项,允许用户将此图像保存在桌面上。我通过调用如下所示的 servlet 来执行此操作,该 servlet 读取存储的图像并写入字节流。

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

response.setHeader("Content-disposition","attachment; filename=output.png");

String filename = request.getSession().getServletContext().getRealPath("/")+"/images/output.png";
String mimeType = "image/png";
response.setContentType(mimeType);

File file = new File(filename);
response.setContentLength((int)file.length());
FileInputStream in = new FileInputStream(file);
OutputStream outputStream = response.getOutputStream();

byte[] buf = new byte[1024];
int count = 0;
while ((count = in.read(buf)) >= 0) {
outputStream.write(buf, 0, count);
}
in.close();
outputStream.close();


}

这种方法的问题是,如果另一个用户(用户 2)同时生成词云,它会用这个新图像替换 output.png。现在,如果用户 1 尝试保存图像,他会得到错误的图像(用户 2 的图像)。

您能否建议我一种更好的方法,使图像保持特定于用户?

最佳答案

如何为图像生成一个唯一的文件名,而不是一直使用相同的文件名?

然后,文件名可以存储在用户的 session 中,或者作为 URL 参数传递给第二个 Servlet。这允许大量用户生成图像(只要您的文件名确实是唯一的),并且仍然使用基于磁盘的方法。

您也可以将图像直接存储在用户 session 中,但这会消耗大量内存,而且并非所有用户都会使用“保存在桌面上”功能。

编辑:另外,当您决定采用什么方法来实现此目的时,请记住用户也可以同时生成两个图像(例如,如果他在两个选项卡中打开您的服务)。我认为在这种情况下,真正唯一的文件名比用户名更好。

关于java逻辑帮助保存图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5408220/

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