Java 将缓冲图像转换为多部分文件

Java 将缓冲图像转换为多部分文件,java,image,spring,spring-mvc,Java,Image,Spring,Spring Mvc,使用springmvc和JSP 我的情景- 用户上载图像文件(gif、jpg、png),如果文件与尺寸不匹配,则需要在jsp上对文件进行缩放和禁用,作为预览 我有MultipartFile(上传的文件),我将其转换为buffereImage,然后使用Graphics2D调整buffereImage的大小。我想再次将这个缓冲图像转换成多部分文件,以便在jsp上显示它 如何将缓冲图像转换为多部分文件 谢谢我怀疑这句话是否正确:我想再次将这个缓冲图像转换成多部分文件,以便在jsp上显示它 据我所知,您

使用springmvc和JSP

我的情景-

用户上载图像文件(gif、jpg、png),如果文件与尺寸不匹配,则需要在jsp上对文件进行缩放和禁用,作为预览

我有
MultipartFile
(上传的文件),我将其转换为
buffereImage
,然后使用
Graphics2D
调整buffereImage的大小。我想再次将这个缓冲图像转换成多部分文件,以便在jsp上显示它

如何将缓冲图像转换为多部分文件


谢谢

我怀疑这句话是否正确:我想再次将这个缓冲图像转换成多部分文件,以便在jsp上显示它

据我所知,您需要:

  • 将转换后的图像写入磁盘并使用html
    标记显示,或
  • 创建一个SpringMVC处理程序方法,将映像直接写入响应体,如下所示

  • 您可能可以使用
    ImageIO
    buffereImage
    写入某种文件格式

    比如:


    其中,
    stream
    可以是服务器文件系统的
    FileOutputStream
    ,数据库blob的
    OutputStream
    ,或者servlet响应的
    OutputStream
    ,具体取决于存储位置/如果您想存储它。

    尝试描述您想对图像做什么。您可能不需要将其转换回
    MultipartFile
    。是否要将其存储(在文件中?在数据库中?)?是否要在JSP标记中显示带有图像的JSP?或者您只是想在服务的响应中返回重新缩放的图像?也就是说,您可以将其以Blob二进制格式存储到数据库中。然后,您需要直接从该格式显示它,或者出于多种目的将其转换为另一个对象(例如:MultipartFile)。
    @RequestMapping(..)
    public void convertedImg(HttpServletResponse resp) {
      // set response Content-Type..
      OutputStream os = resp.getOutputStream();
      //.. write your converted image into os
    }
    
    BufferedImage image; // your image
    OutputStream stream; // your output
    
    try {
        ImageIO.write(image, "png", stream);
    }
    finally {
        stream.flush();
    }