spring mvc 返回 图片

@ResponseBody
@RequestMapping(value = "/photo2", method = RequestMethod.GET, produces = MediaType.IMAGE_JPEG_VALUE)
public byte[] testphoto() throws IOException {
InputStream in = servletContext.getResourceAsStream("/images/no_image.jpg");
return IOUtils.toByteArray(in);
}

@RequestMapping(value = "user/avatar/{userId}", method = RequestMethod.GET)
@ResponseBody
public ResponseEntity<InputStreamResource> downloadUserAvatarImage(@PathVariable Long userId) {
GridFSDBFile gridFsFile = fileService.findUserAccountAvatarById(userId);

return ResponseEntity.ok()
.contentLength(gridFsFile.getLength())
.contentType(MediaType.parseMediaType(gridFsFile.getContentType()))
.body(new InputStreamResource(gridFsFile.getInputStream()));
}

@RequestMapping("/photo2")
public ResponseEntity<byte[]> testphoto() throws IOException {
InputStream in = servletContext.getResourceAsStream("/images/no_image.jpg");

final HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.IMAGE_PNG);

return new ResponseEntity<byte[]>(IOUtils.toByteArray(in), headers, HttpStatus.CREATED);
}


@RequestMapping(value = "/get-image",method = RequestMethod.GET)
public ResponseEntity<byte[]> getImage() throws IOException {
RandomAccessFile f = new RandomAccessFile("/home/vivex/apache-tomcat-7.0.59/tmpFiles/1.jpg", "r");
byte[] b = new byte[(int)f.length()];
f.readFully(b);
final HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.IMAGE_PNG);


return new ResponseEntity<byte[]>(b, headers, HttpStatus.CREATED);

 

}

HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.parseMediaType("your content type here"));
headers.set("Content-Disposition", "attachment; filename=fileName.jpg");
headers.setContentLength(fileContent.length);
return new ResponseEntity<>(fileContent, headers, HttpStatus.OK);

@RequestMapping(value = "/getimage", method = RequestMethod.GET, produces = MediaType.IMAGE_JPEG_VALUE)
public void getImage( HttpServletResponse response ) throws IOException
{
ByteStreams.copy( getClass().getResourceAsStream( "/preview-image.jpg" ), response.getOutputStream() );
}

  

转载于:https://www.cnblogs.com/zany-hui/articles/11229095.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用Java的ImageIO类来压缩MultipartFile中的图片。下面是一个示例代码,演示了如何对MultipartFile中的图片进行压缩,并返回压缩后的MultipartFile对象。 ```java import org.springframework.web.multipart.MultipartFile; import javax.imageio.ImageIO; import java.awt.*; import java.awt.image.BufferedImage; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; public class ImageCompressor { public MultipartFile compressImage(MultipartFile file, int maxWidth, int maxHeight, float quality) throws IOException { BufferedImage originalImage = ImageIO.read(file.getInputStream()); // 计算图片缩放后的尺寸 int scaledWidth = originalImage.getWidth(); int scaledHeight = originalImage.getHeight(); if (scaledWidth > maxWidth) { scaledWidth = maxWidth; scaledHeight = (scaledWidth * originalImage.getHeight()) / originalImage.getWidth(); } if (scaledHeight > maxHeight) { scaledHeight = maxHeight; scaledWidth = (scaledHeight * originalImage.getWidth()) / originalImage.getHeight(); } // 创建缩放后的图片 BufferedImage resizedImage = new BufferedImage(scaledWidth, scaledHeight, BufferedImage.TYPE_INT_RGB); Graphics2D g = resizedImage.createGraphics(); g.drawImage(originalImage, 0, 0, scaledWidth, scaledHeight, null); g.dispose(); // 转换为字节数组 ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); ImageIO.write(resizedImage, "jpg", outputStream); byte[] bytes = outputStream.toByteArray(); // 创建压缩后的MultipartFile对象 ByteArrayInputStream inputStream = new ByteArrayInputStream(bytes); return new MyMultipartFile(inputStream, file.getOriginalFilename(), file.getContentType()); } } ``` 上述代码中的`maxWidth`和`maxHeight`参数用于指定压缩后的图片最大宽度和高度,`quality`参数用于指定图片的压缩质量(0.0到1.0之间)。你可以根据自己的需求来调整这些参数。 请注意,由于Spring的MultipartFile接口是只读的,无法直接修改其中的数据。因此,上述代码中创建了一个自定义的`MyMultipartFile`类,用于包装压缩后的字节数组。你需要自己实现这个类,并遵循MultipartFile接口的方法定义。 希望对你有帮助!如果有任何问题,请随时问我。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值