简单图片文件上传并处理缩略图生成
2016-06-05 08:30
417 查看
第一种,推荐方式,调用api方法,Thumbnailator类库来实现。只需要我们提供的参数即可。这样注意力集中在业务功能上去。
第二种,1.使用java WAT 类库,根据缩略比例计算缩略图高度和宽度。
2.使用image类获得原图的缩放版本
3.使用image IO 类保存缩略图,并从服务器路径获得
注意:第二种比较复杂。
对于两种实现方式,有不同的方法,
第一种使用size方法,
第二种,使用BufferedImage来提高压缩性能,并使用imageIO类文件的读入和原图缩略图的生成,并通过Graphics类来绘制图片。
下来我们做一个文件压缩:
1.配置springmvc
2.页面中的post表单,提交文件
3.spring代码中接收文件
3.完成缩略图生成开发
使用AWT类库生成图片就不说了,基本就是操作 ImageIO,graph来绘图,不建议使用。
使用keepaspectratio(false);可以使用指定图片的大小,而非等比缩略
Thumbnails.of(file.getInputStream()).keepAspectRatio(false).size(with,height).toFile(des);
第二种,1.使用java WAT 类库,根据缩略比例计算缩略图高度和宽度。
2.使用image类获得原图的缩放版本
3.使用image IO 类保存缩略图,并从服务器路径获得
注意:第二种比较复杂。
对于两种实现方式,有不同的方法,
第一种使用size方法,
第二种,使用BufferedImage来提高压缩性能,并使用imageIO类文件的读入和原图缩略图的生成,并通过Graphics类来绘制图片。
下来我们做一个文件压缩:
1.配置springmvc
使用springmvc配置文件上传bean,一般配置在application context-mvc.xml中 <bean id= "multipartResolver" class="org.springframwork.web.multipart.commons.CommonsMultipartResolver"> <property name="defalutEncoding" value="utf-8"></property> <property name="maxUloadSize" vlaue="104857600"></property> <property name="maxUloadSize" vlaue="104857600"></property> <property name="maxInMemorySize" vlaue="40960"></property> </bean> |
<form id="upload_form" enctype="multipart/from-data" method="post" action="/url"> <h2>上传图片</h2> <div> <input type="file" name="image" id="image"/> <input type="submit" vaule="upload"/> </div> </form> |
文件上传service层: @service public class UploadService{ public String uploadImage(CommonsMultipartFile file,String uploadPath/*相对路径*/,String realUploadPath/*绝对路径*/){ InputStream is =null; OutputStream os =null ; //输出流 try{ is=file.getInputStream();//获取输入流信息 String des=realUploadPath+”/“+file.getOriginalFilename();//获取文件绝对路径 os=new FileOutputStream(des);//获取文件输出流,并指向文件路径 byte[] buffer=new byte[1024]; //1kb大小 int len=0; while((len=is.read(buffer))>0){ os.write(buffer);//只要大于0,就写入到文件中去 } }catch(){ }finally{ if(is!=null){ try{is.close();}catch(){} } }//finally if(os!=null){ try{os.close();}catch(){ }finally{ } } return uploadPath+”/“+file.getOriginalFilename();//返回路径 } } |
@Service public class ThumbnailService{ public static final int WIDTH=100; //缩略图宽度 public static final int HEIGHT=100; public String thumbnail(CommonsMultipartFile,String uploadPath/*相对路径*/,String realUploadPath/*绝对路径*/) try{ //调用这个方法设置大小就完成了缩略图的生成 //并且生成到绝对路径中去 String des=realUploadPath+"/thum_"+file.getOriginalFilename(); Thumbnails.of(file.getInputStream()).size(WIDTH,HEIGHT).toFile(des); }catch(){} return uploadPath+”/thum_”+file.getOriginalFilename();//相对路径 } |
使用keepaspectratio(false);可以使用指定图片的大小,而非等比缩略
Thumbnails.of(file.getInputStream()).keepAspectRatio(false).size(with,height).toFile(des);
相关文章推荐
- linux服务器之LVS、Nginx和HAProxy负载均衡器对比总结
- 第十四周学习进度
- iOS开 4000 发时关于UILabel文本高度和宽度的计算问题(单行、多行)
- 12个非常实用的JavaScript小技巧
- getch(),getche(),getchar(),gets(),scanf()的区别
- 正则表达式--抓取email地址
- 2833 奇怪的梦境
- OSChina 周日乱弹 ——儿子在别人手上,怎么办!
- 第二次冲刺个人工作总结12
- 表单提交原理
- 2488 绿豆蛙的归宿
- 每天一个Linux命令(38)top命令
- VS2013 未找到与約束ContractName
- 第二期冲刺每日站立会议——20160605
- 在表单提交前进行验证的几种方式
- game design原理系列学习笔记(七)
- 6.5站立会议3
- Linux信号机制与信号处理
- Linux系统日志及日志分析
- Linux系统性能分析