zoukankan      html  css  js  c++  java
  • 使用java来压缩图片

    使用java来压缩图片,简单几句,清清爽爽

    使用0.3的压缩比得到的结果如下(从2.8M压缩到268K,且图片的清晰度看不出明显差别):

    package carlspringtest;
    
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.util.Iterator;
    
    import javax.imageio.IIOImage;
    import javax.imageio.ImageIO;
    import javax.imageio.ImageWriteParam;
    import javax.imageio.ImageWriter;
    import javax.imageio.stream.ImageOutputStream;
    
    /**
     * Compress JPEG File Example
     *
     * @author Krishna
     *
     */
    public class CompressJPEGFileExample {
        public static void main(String[] args) throws FileNotFoundException, IOException{
            File imageFile = new File("f:\IMG_20151219_172146.jpg");//source
            File compressedImageFile = new File("f:\compressed_file5.jpg");//result
    
            InputStream inputStream = new FileInputStream(imageFile);
            OutputStream outputStream = new FileOutputStream(compressedImageFile);
    
            float imageQuality = 0.3f;
    
            //Create the buffered image
            BufferedImage bufferedImage = ImageIO.read(inputStream);
    
            //Get image writers
            Iterator<ImageWriter> imageWriters = ImageIO.getImageWritersByFormatName("jpg");
    
            if (!imageWriters.hasNext())
                throw new IllegalStateException("Writers Not Found!!");
    
            ImageWriter imageWriter = (ImageWriter) imageWriters.next();
            ImageOutputStream imageOutputStream = ImageIO.createImageOutputStream(outputStream);
            imageWriter.setOutput(imageOutputStream);
    
            ImageWriteParam imageWriteParam = imageWriter.getDefaultWriteParam();
    
            //Set the compress quality metrics
            imageWriteParam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
            imageWriteParam.setCompressionQuality(imageQuality);
    
            //Created image
            imageWriter.write(null, new IIOImage(bufferedImage, null, null), imageWriteParam);
    
            // close all streams
            inputStream.close();
            outputStream.close();
            imageOutputStream.close();
            imageWriter.dispose();
        }
    }
  • 相关阅读:
    web服务器
    javascript对象属性为空的判断
    字符编码:ASCII,Unicode和UTF-8
    javascript 中英文字符长度和截断处理
    函数节流与去抖
    互联网协议
    解读 v8 排序源码
    乱序
    递归
    函数记忆
  • 原文地址:https://www.cnblogs.com/jinhuazhe2013/p/5059461.html
Copyright © 2011-2022 走看看