



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
/* * 缩略图实现,将图片(jpg、bmp、png、gif等等)真实的变成想要的大小 */ package com.bean; import java.awt.Image; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import javax.imageio.ImageIO; import com.sun.image.codec.jpeg.JPEGCodec; import com.sun.image.codec.jpeg.JPEGImageEncoder; /* * 缩略图类(通用) 本java类能将jpg、bmp、png、gif图片文件,进行等比或非等比的大小转换。 具体使用方法 * compressPic(大图片路径,生成小图片路径,大图片文件名,生成小图片文名,生成小图片宽度,生成小图片高度,是否等比缩放(默认为true) */ public class CompressPicDemo private File file = null; / 文件对象 private String inputDir; / 输入图路径 private String outputDir; / 输出图路径 private String inputFileName; / 输入图文件名 private String outputFileName; / 输出图文件名 private int outputWidth = 100; / 默认输出图片宽 private int outputHeight = 100; / 默认输出图片高 private boolean proportion = true; / 是否等比缩放标记(默认为等比缩放) public CompressPicDemo() / 初始化变量 inputDir = ; outputDir = ; inputFileName = ; outputFileName = ; outputWidth = 100; outputHeight = 100; public void setInputDir(String inputDir) this.inputDir = inputDir; public void setOutputDir(String outputDir) this.outputDir = outputDir; public void setInputFileName(String inputFileName) this.inputFileName = inputFileName; public void setOutputFileName(String outputFileName) this.outputFileName = outputFileName; public void setOutputWidth(int outputWidth) this.outputWidth = outputWidth; public void setOutputHeight(int outputHeight) this.outputHeight = outputHeight; public void setWidthAndHeight(int width, int height) this.outputWidth = width; this.outputHeight = height; /* * 获得图片大小 * 传入参数 String path :图片路径 */ public long getPicSize(String path) file = new File(path); return file.length(); / 图片处理 public String compressPic() try /获得源文件 file = new File(inputDir + inputFileName); if (!file.exists() return ; Image img = ImageIO.read(file); /这里是从本地读图片文件,如果是执行上传图片的话, Formfile formfile=获得表单提交的Formfile ,然后 ImageIO.read 方法里参数放 formfile.getInputStream() / 判断图片格式是否正确 if (img.getWidth(null) = -1) System.out.println( cant read,retry! + ); return no; else int newWidth; int newHeight; / 判断是否是等比缩放 if (portion = true) / 为等比缩放计算输出的图片宽度及高度 double rate1 = (double) img.getWidth(null) / (double) outputWidth + 0.1; double rate2 = (double) img.getHeight(null) / (double) outputHeight + 0.1; / 根据缩放比率大的进行缩放控制 double rate = rate1 rate2 ? rate1 : rate2; newWidth = (int) (double) img.getWidth(null) / rate); newHeight = (int) (double) img.getHeight(null) / rate); else newWidth = outputWidth; / 输出的图片宽度 newHeight = outputHeight; / 输出的图片高度 BufferedImage tag = new BufferedImage(int) newWidth, (int) newHeight, BufferedImage.TYPE_INT_RGB); /* * Image.SCALE_SMOOTH 的缩略算法 生成缩略图片的平滑度的 * 优先级比速度高 生成的图片质量比较好 但速度慢 */ tag.getGraphics().drawImage(img.getScaledInstance(newWidth, newHeight, Image.SCALE_SMOOTH), 0, 0, null); FileOutputStream out = new FileOutputStream(outputDir + outputFileName); / JPEGImageEncoder可适用于其他图片类型的转换 JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out); encoder.encode(tag); out.close(); catch (IOException ex) ex.printStackTrace(); return ok; public String compressPic (String inputDir, String outputDir, String inputFileName, String outputFileName) / 输入图路径 this.inputDir = inputDir; / 输出图路径 this.outputDir = outputDir; / 输入图文件名 this.inputFileName = inputFileName; / 输出图文件名 this.outputFileName = outputFileName; return compressPic(); public String compressPic(String inputDir, String outputDir, String inputFileName, String outputFileName, int width, int height, boolean gp) / 输入图路径 this.inputDir = inputDir; / 输出图路径 this.outputDir = outputDir; / 输入图文件名 this.inputFileName = inputFileName; / 输出图文件名 this.outputFileName = outputFileName; / 设置图片长宽 setWidthAndHeight(width, height); / 是否是等比缩放 标记 portion = gp; return compressPic(); public static void main(String args) CompressPicDemo mypic = new CompressPicDemo(); System.out.println(输入的图片大小: + mypic.getPicSize(e:chris.jpg)/1024 + KB); int count = 0; / 记录全部图片压缩所用时间 for (int i = 0; i 3; i+) int start = (int) System.currentTimeMillis(); / 开始时间 pressPic(e:, e:test, chris.jpg, chris+i+.jpg, 120, 180, false); int end = (int) System.currentTimeMillis(); / 结束时间
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工地死人补偿合同(标准版)
- 建筑工程泥工施工合同范本及注意事项
- 二零二五年度文化场馆食堂承包服务合同规范范本
- 二零二五版购房首付贷款答辩状范文及合同分析
- 二零二五年度重点工程土方开挖及运输服务合同
- 二零二五年电商平台明星直播带货合同
- 二零二五年度钢结构建筑防水施工合同
- 二零二五年度安防监控系统采购合同创新版
- 二零二五年度智能建筑工程项目经理聘用服务合同
- 二零二五年度个人租赁车辆保险合同
- JJG 597-2025交流电能表检定装置检定规程
- DBJT 13-318-2025建筑施工盘扣式钢管脚手架安全技术标准
- DB4406T 55-2025 居家养老紧急呼援服务规范
- 2025年中国儿童学习机市场竞争格局及投资战略规划报告
- 厨师专业论文
- 4.1+人的认识从何而来(课件)-2025-2026学年高二政治高效课堂课件+随堂精练(统编版)
- 业务咨询公司管理制度
- 中国医疗信息化行业市场现状分析及发展趋势与投资前景研究报告2025-2028版
- 征兵心理适应能力测试题及答案
- 2025-2030年中国雾化铜粉行业市场现状供需分析及投资评估规划分析研究报告
- 2024年山西省中考历史真题
评论
0/150
提交评论