TA的每日心情 | 开心 2021-3-12 23:18 |
---|
签到天数: 2 天 [LV.1]初来乍到
|
- /**
- * ImageCompress 提供用户将大图片按比例压缩为小图片,支持JPG
- 在做网站的时候可能用到,采用单态.
- * Please refer to:
-
- * http://blog.csdn.net/feng_sundy/archive/2008/08/05/2769572.aspx
- *
复制代码 * @author feng_sunddy < sundysea@hotmail.com> * @version 1.0 * @see java.awt.image.BufferedImage **/ import java.awt.Frame; import java.awt.Image; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import java.util.Iterator; import javax.imageio.IIOImage; import javax.imageio.ImageIO; import javax.imageio.ImageWriteParam; import javax.imageio.ImageWriter; import javax.imageio.stream.FileImageOutputStream; public class ImageCompress { protected ImageWriter imgWrier; protected ImageWriteParam imgWriteParams; private int width=125; private int height=125; private float quality=0.8f;////这个值范围为0-1.0,值越小,压缩的越小,当然图片失真越明显 private static ImageCompress compress; private ImageCompress() { } public static ImageCompress getImageCompress(){ if(null==compress){ compress=new ImageCompress(); } return compress; } public void compress(File src,File des) { try { // 压缩前的JPEG文件 // 压缩前后的JPEG文件 if(!des.exists()){ des.createNewFile(); } // 压缩百分比 if(des.exists()){ des.delete(); } Image image = javax.imageio.ImageIO.read(src); BufferedImage tag=new BufferedImage(this.width,this.height ,BufferedImage.TYPE_INT_RGB); tag.getGraphics().drawImage(image, 0, 0, this.width, this.width, null); // 绘制缩小后的图 Iterator it = ImageIO.getImageWritersBySuffix("jpg"); if (it.hasNext()) { FileImageOutputStream fileImageOutputStream = new FileImageOutputStream( des); ImageWriter iw = (ImageWriter) it.next(); ImageWriteParam iwp = iw.getDefaultWriteParam(); iwp.setCompressionMode(ImageWriteParam.MODE_EXPLICIT); iwp.setCompressionQuality(quality); iw.setOutput(fileImageOutputStream); iw.write(null, new IIOImage(tag, null, null), iwp); iw.dispose(); fileImageOutputStream.flush(); fileImageOutputStream.close(); } } catch (FileNotFoundException ex) { ex.printStackTrace(); } catch (IOException ex) { ex.printStackTrace(); }finally{ } } //测试 //public static void main(String args[]){ // ImageCompress press =new ImageCompress(); // press.compress(new File("c://java/10.jpg"), new File("c://java//4.jpg")); // System.out.println("OKOKO"); // } public int getWidth() { return width; } public void setWidth(int width) { this.width = width; } public int getHeight() { return height; } public void setHeight(int height) { this.height = height; } public float getQuality() { return quality; } public void setQuality(float quality) { this.quality = quality; } }
源码下载:http://file.javaxxz.com/2014/10/29/235655437.zip |
|