SpringMVC处理图片上传

@PostMapping("/categories")
public Object add(Category bean, MultipartFile image, HttpServletRequest request) throws Exception {
   categoryService.add(bean);//调用service里的dao方法将bean存入数据库
   saveOrUpdateImageFile(bean, image, request);
   return bean;
}
public void saveOrUpdateImageFile(Category bean, MultipartFile image, HttpServletRequest request)
      throws IOException {
   File imageFolder= new File(request.getServletContext().getRealPath("img/category"));
//得到request的请求路径,在路径后面加上img/category
   File file = new File(imageFolder,bean.getId()+".jpg");//创建一个file
   if(!file.getParentFile().exists())
      file.getParentFile().mkdirs();
   image.transferTo(file);//将mutipartfile转为特定的file。
   BufferedImage img = ImageUtil.change2jpg(file);
   ImageIO.write(img, "jpg", file);
}

关于ImageUtil.change2jpg(file);

仅仅通过ImageIO.write(img, "jpg", file);不足以保证转换出来的jpg文件显示正常。这段转换代码(网上提供的),可以确保转换后jpg的图片显示正常,而不会出现暗红色( 有一定几率出现)

关于ImageIO.write(img, "jpg", file);

RenderedImage接口的子类是BufferedImage,因此在这里可以直接出传入BufferedImage的实例化对象,将BufferedImage对象直接写出指定输出流

public static boolean write(RenderedImage im,String formatName,File output)

public static boolean write(RenderedImage im, String formatName,OutputStream output)

public static boolean write(RenderedImage im, String formatName,ImageOutputStream output)

 

例子:

使用支持给定格式的任意 ImageWriter 将一个图像写入 File

public class Test {
    public static void main(String[] args) {
        File out = new File("/Users/wangjue/DownLoads/1.jpg");
        //将图片写入ImageIO流
        try {
            BufferedImage img = ImageIO.read(out);
        //将图片写出到指定位置(复制图片)
            OutputStream ops = new FileOutputStream(new File("/Users/wangjue/DownLoads/1(1).jpg"));
            ImageIO.write(img, "jpg", ops);         
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值