当前位置: 首页 > news >正文

java显示图片缩略图_java中生成图片的缩略图

importjava.awt.Image;importjava.awt.image.BufferedImage;importjava.io.File;importjava.io.FileOutputStream;importjava.io.IOException;importjavax.imageio.ImageIO;public classPicUtils {private String srcFile;//原始文件名

private String destFile;//目标文件名

private intwidth;private intheight;privateImage img;/*** 构造函数

*

*

*@paramfileName

* String

*@throwsIOException*/

public PicUtils(String fileName) throwsIOException{

File _file= newFile(fileName);this.srcFile =fileName;//查找最后一个

int index = this.srcFile.lastIndexOf(".");

String ext= this.srcFile.substring(index);this.destFile = this.srcFile.substring(0, index) +"_s"+ext;

img= ImageIO.read(_file);//构造Image对象

width = img.getWidth(null); //得到源图宽

height = img.getHeight(null); //得到源图高

}/*** 强制压缩/放大图片到固定的大小

*

*@paramw

* int 新宽度

*@paramh

* int 新高度

*@throwsIOException*/

public void resize(int w,int h) throwsIOException{

BufferedImage _image= newBufferedImage(w, h, BufferedImage.TYPE_INT_RGB);//绘制缩小后的图

_image.getGraphics().drawImage(img, 0, 0, w, h, null);//输出到文件流

FileOutputStream out = newFileOutputStream(destFile);

ImageIO.write(_image,"jpg", out);

out.close();/*******

* 源代码

*

* BufferedImage _image = new BufferedImage(w, h,

BufferedImage.TYPE_INT_RGB);

_image.getGraphics().drawImage(img, 0, 0, w, h, null); // 绘制缩小后的图

FileOutputStream out = new FileOutputStream(destFile); // 输出到文件流

JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);

encoder.encode(_image); // 近JPEG编码

out.close();*/}/*** 按照固定的比例缩放图片

*

*@paramt

* double 比例

*@throwsIOException*/

public void resize(double t) throwsIOException{int w = (int)(width *t);int h = (int)(height *t);

resize(w,h);

}/*** 以宽度为基准,等比例放缩图片

*

*@paramw

* int 新宽度

*@throwsIOException*/

public void resizeByWidth(int w) throwsIOException{int h = (int) (height * w /width);

resize(w,h);

}/*** 以高度为基准,等比例缩放图片

*

*@paramh

* int 新高度

*@throwsIOException*/

public void resizeByHeight(int h) throwsIOException{int w = (int)(width * h /height);

resize(w,h);

}/*** 按照最大高度限制,生成最大的等比例缩略图

*

*@paramw

* int 最大宽度

*@paramh

* int 最大高度

*@throwsIOException*/

public void resizeFix(int w,int h) throwsIOException{if(width / height > w/h){

resizeByWidth(w);

}else{

resizeByHeight(h);

}

}/*** 设置目标文件名 setDestFile

*

*@paramfileName

* String 文件名字符串

*@throwsException*/

public void setDestFile(String fileName) throwsException{if(!fileName.endsWith(".jpg")){throw new Exception("Dest File Must end with \".jpg\".");

}

destFile=fileName;

}/*** 获取目标文件名 getDestFile*/

publicString getDestFile(){returndestFile;

}/*** 获取图片原始宽度 getSrcWidth*/

public intgetSrcWidth(){returnwidth;

}/*** 获取图片原始高度 getSrcHeight*/

public intgetSrcHeight(){returnheight;

}

}

相关文章:

  • 基于TCP/IP的手机聊天游戏(附带源码和解释)之客户端类
  • 在DataGrid等控件中添加自动编号的列
  • java 循环队列实现_Java实现循环队列
  • 长期用电脑人士要多吃樱桃
  • [软工]此EUP非彼EUP
  • java 加减乘除是原子操作吗_Go并发编程之传统同步—(3)原子操作
  • 毕业了
  • mysql innodb 删除_MySQL InnoDB 删除资料后释放硬盘空间
  • request变量java jsp_JSP里request变量列表
  • transition java_Transition 过渡
  • 相对最完整的软件测试工具手册
  • 上传图片并且生成可以控制大小图片清晰度的方法
  • 手机php开发环境,PHP开发环境搭建
  • 要不要把php5升级到php7,将php5升级到php7后AJAX不工作
  • [软工]近距离接触RUP plug-in
  • 【每日笔记】【Go学习笔记】2019-01-10 codis proxy处理流程
  • Apache Pulsar 2.1 重磅发布
  • CSS选择器——伪元素选择器之处理父元素高度及外边距溢出
  • Git学习与使用心得(1)—— 初始化
  • JavaScript对象详解
  • KMP算法及优化
  • Linux下的乱码问题
  • Lsb图片隐写
  • Map集合、散列表、红黑树介绍
  • mysql常用命令汇总
  • Vue2.0 实现互斥
  • Vue实战(四)登录/注册页的实现
  • 基于webpack 的 vue 多页架构
  • 前端存储 - localStorage
  • 前端技术周刊 2019-01-14:客户端存储
  • 如何正确配置 Ubuntu 14.04 服务器?
  • 什么是Javascript函数节流?
  • 使用iElevator.js模拟segmentfault的文章标题导航
  • 思考 CSS 架构
  • ​MySQL主从复制一致性检测
  • ###C语言程序设计-----C语言学习(6)#
  • #include<初见C语言之指针(5)>
  • #Linux(权限管理)
  • %@ page import=%的用法
  • (C语言)深入理解指针2之野指针与传值与传址与assert断言
  • (Ruby)Ubuntu12.04安装Rails环境
  • (zhuan) 一些RL的文献(及笔记)
  • (ZT)出版业改革:该死的死,该生的生
  • (安卓)跳转应用市场APP详情页的方式
  • (定时器/计数器)中断系统(详解与使用)
  • (附源码)ssm高校运动会管理系统 毕业设计 020419
  • (原創) 如何將struct塞進vector? (C/C++) (STL)
  • (转)memcache、redis缓存
  • (转)编辑寄语:因为爱心,所以美丽
  • (转)树状数组
  • .bat批处理(三):变量声明、设置、拼接、截取
  • .jks文件(JAVA KeyStore)
  • .net core控制台应用程序初识
  • .net反编译工具
  • .net连接oracle数据库