JAVA上传图片自动缩放处理.docx_第1页
JAVA上传图片自动缩放处理.docx_第2页
JAVA上传图片自动缩放处理.docx_第3页
JAVA上传图片自动缩放处理.docx_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

/* * 缩略图实现,将图片(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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论