springMVC MultipartFile上传图片时如何修改图片大小

 更新时间:2023年12月05日 15:09:29   作者:RiceTZ  
这篇文章主要介绍了springMVC MultipartFile上传图片时如何修改图片大小问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

引言

服务器配置比较低,打开网站时加载1MB+的图片 速度很慢,影响客户体验。

所以从网上找了java修改图片大小的方法,这里记录一下 以备以后不时之需。

我这里设置的是宽240,,高135 按照16:9的比例设置。

修改之后的图片大小在100kb左右

16:9的比例其他参数:

3840×2160  2560X1440 1920×1080 1600×900 1366×768 1280×720 1024×576

960×540 854×480 720×405 640×360 480×270 320×180

代码

@RequestMapping("/admin/fileUpload")
	@ResponseBody
	public Map<String, Object> fileUpload(HttpServletRequest request,
			@RequestParam("uploadFile") MultipartFile uploadFile){
		Map<String, Object> map = new HashMap<String, Object>();
		try {
			//原文件名后缀
			String fileEnd = FilenameUtils.getExtension(uploadFile.getOriginalFilename());
			//新文件名以uuid为名
			String fileUUID = CommonsUtil.getUUID();
			//获取当前项目部署的地址,也可以直接指定路径,D://blogFile//xx.jpg
			//String realPath = request.getSession().getServletContext().getRealPath("//blogFile//"+TimeUtil.curYearMonthDay());
			String realPath = "C://blogFile//"+TimeUtil.curYearMonthDay();
			File dirs=new File(realPath);
			if(!dirs.exists()){//判断文件夹是否存在 
				System.out.println("文件夹不存在,进行创建。");
				dirs.mkdirs();//不存在就创建
			}
			//创建file对象,新地址新名称 原上传图片所需
			//File newFile=new File(realPath,fileUUID+"."+fileEnd);
 
			//上传图片时对图片按照16:9的比例压缩240*135
			//读取图片
			BufferedInputStream in = new BufferedInputStream(uploadFile.getInputStream());
			//字节流转图片对象
			Image bi =ImageIO.read(in);
			//构建图片流 按照16:9的比例 设置宽高 240*135 
            //宽240 高135 我这里直接写死了 也可以写成参数形式的。
			BufferedImage tag = new BufferedImage(240, 135, BufferedImage.TYPE_INT_RGB);
			//绘制改变尺寸后的图
			tag.getGraphics().drawImage(bi, 0, 0, 240, 135, null);  
			//输出流
			BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(realPath+"//"+fileUUID+"."+fileEnd));
			ImageIO.write(tag, fileEnd,out);
			in.close();
			out.close();
			//原上传图片方法
			//uploadFile.transferTo(newFile);
			//FileUtils.copyInputStreamToFile(uploadFile.getInputStream(), newFile);//第二种原上传图片方法
			System.out.println("图片地址:"+realPath+"//"+fileUUID+"."+fileEnd);
			map.put("sign", "success");
		} catch (Exception e) {
			e.printStackTrace();
			map.put("sign", "error");
			map.put("msg", e.toString());
		}
		return map;
	}

一点小建议

因为java是跨语言 所以路径符最好使用/

  • 在java中路径一般用"/"
  • windows中的路径一般用"\"
  • linux、unix中的路径一般用"/"

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Spring中@Value使用详解及SPEL表达式

    Spring中@Value使用详解及SPEL表达式

    这篇文章主要介绍了Spring中@Value使用详解及SPEL表达式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • 深入探究Spring底层核心原理

    深入探究Spring底层核心原理

    理解IOC与AOP的实现机制,优化应用性能与可维护性。Spring通过IOC容器管理Bean,AOP实现切面编程,支持事务管理、ORM框架等。深入理解Spring原理,可以帮助我们更好地使用Spring框架,提高开发效率与质量
    2023-04-04
  • Java中的MapStruct的使用方法代码实例

    Java中的MapStruct的使用方法代码实例

    这篇文章主要介绍了Java中的MapStruct的使用方法代码实例,mapstruct是一种实体类映射框架,能够通过Java注解将一个实体类的属性安全地赋值给另一个实体类,有了mapstruct,只需要定义一个映射器接口,声明需要映射的方法,需要的朋友可以参考下
    2023-10-10
  • SpringBoot中的事务配置管理详解

    SpringBoot中的事务配置管理详解

    这篇文章主要介绍了SpringBoot中的事务配置管理详解,Spring Boot 默认的事务规则是遇到运行异常(RuntimeException)和程序错误(Error)才会回滚,但是抛出SQLException就无法回滚了,需要的朋友可以参考下
    2024-01-01
  • Spring Boot 中application.yml与bootstrap.yml的区别

    Spring Boot 中application.yml与bootstrap.yml的区别

    其实yml和properties文件是一样的原理,且一个项目上要么yml或者properties,二选一的存在。这篇文章给大家介绍了Spring Boot 中application.yml与bootstrap.yml的区别,感兴趣的朋友一起看看吧
    2018-04-04
  • JAVA获取CLASSPATH路径的方法详解

    JAVA获取CLASSPATH路径的方法详解

    这篇文章主要介绍了Java 中获取类路径 classpath 的方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-09-09
  • file.mkdir()、file.mkdirs()和file.createNewFile()的区别

    file.mkdir()、file.mkdirs()和file.createNewFile()的区别

    本文主要介绍了file.mkdir()、file.mkdirs()和file.createNewFile()的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • ActiveMQ持久化机制代码实例

    ActiveMQ持久化机制代码实例

    这篇文章主要介绍了ActiveMQ持久化机制代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-02-02
  • 使用java -jar修改SpringBoot中application.properties的配置项

    使用java -jar修改SpringBoot中application.properties的配置项

    这篇文章主要介绍了使用java -jar修改SpringBoot中application.properties的配置项问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • 新闻列表的分页查询java代码实现

    新闻列表的分页查询java代码实现

    这篇文章主要为大家详细介绍了新闻列表的分页查询java代码实现,感兴趣的小伙伴们可以参考一下
    2016-08-08

最新评论