java图片压缩

来源:互联网 发布:淘宝评价服务是什么 编辑:程序博客网 时间:2024/05/14 08:05
package com.company.Logo;import net.coobird.thumbnailator.Thumbnails;import javax.imageio.IIOImage;import javax.imageio.ImageIO;import javax.imageio.ImageWriteParam;import javax.imageio.ImageWriter;import java.awt.image.BufferedImage;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.OutputStream;/** * Created by Administrator on 2016/12/22. */public class compressImage {    public static void main(String[] args) throws IOException{        File img = new File("D:\\xx");        File[] imgFiles = img.listFiles();        String[] str = {"jpg","gif","png","jpeg"};//        for(int k = 0;k<imgFiles.length;k ++){//            String file2 = imgFiles[k].getName();//////        }        System.out.println("获取目录下的图片");        String path = "D:\\xx";        String pathalbum = path + "album\\";        System.out.println(pathalbum);        String pathshow = path + "show\\";        File dir =new File(path);        File[] files = dir.listFiles();        for(int i=0;i<files.length;i++){            //过滤非图片            String fileType = files[i].getName().substring(files[i].getName().lastIndexOf('.')+1,files[i].getName().length());            System.out.println("fileType:" + fileType);            for(int t=0;t<str.length;t++){                if("jpeg".equals(fileType)){                    System.out.println(files[i].getName());                    String imgName = files[i].getName();                    Thumbnails.of(files[i].getPath()).scale(1).outputQuality(0.4).toFile(path + imgName);                    System.out.println("success");                }                if(str[t].equals(fileType.toLowerCase()) && (fileType.toLowerCase() != "jpeg")){                    System.out.println(files[i].getName());                    String imgName = files[i].getName();                    compressPic(path+ imgName,path + imgName);                }            }        }        File diralbum =new File(pathalbum);        File[] filesalbum = diralbum.listFiles();        for(int i=0;i<filesalbum.length;i++){            //过滤非图片            String fileType = filesalbum[i].getName().substring(filesalbum[i].getName().lastIndexOf('.')+1,filesalbum[i].getName().length());            for(int t=0;t<str.length;t++){                if("jpeg".equals(fileType)){                    System.out.println(filesalbum[i].getName());                    String imgName = filesalbum[i].getName();                    Thumbnails.of(filesalbum[i].getPath()).scale(1).outputQuality(0.4).toFile(pathalbum + imgName);                }                if(str[t].equals(fileType.toLowerCase()) && fileType.toLowerCase() != "jpeg"){                    System.out.println(filesalbum[i].getName());                    String imgName = filesalbum[i].getName();                    compressPic(pathalbum+ imgName,pathalbum + imgName);                }            }        }        File dirshow =new File(pathshow);        File[] filesshow = dirshow.listFiles();        for(int i=0;i<filesshow.length;i++){            //过滤非图片            String fileType = filesshow[i].getName().substring(filesshow[i].getName().lastIndexOf('.')+1,filesshow[i].getName().length());            for(int t=0;t<str.length;t++){                if("jpeg".equals(fileType)){                    System.out.println(filesshow[i].getName());                    String imgName = filesshow[i].getName();                    Thumbnails.of(filesshow[i].getPath()).scale(1).outputQuality(0.4).toFile(pathshow + imgName);                }                if(str[t].equals(fileType.toLowerCase()) && fileType.toLowerCase() != "jpeg"){                    System.out.println(filesshow[i].getName());                    String imgName = filesshow[i].getName();                    compressPic(pathshow+ imgName,pathshow + imgName);                }            }        }    }    public static boolean compressPic(String srcFilePath,String descFilePath)throws IOException {        File file=null;        BufferedImage src=null;        FileOutputStream out=null;        ImageWriter imgWrier;        ImageWriteParam imgWriteParams;        // 指定写图片的方式为 jpg        imgWrier= ImageIO.getImageWritersByFormatName("jpg").next();        imgWriteParams=new javax.imageio.plugins.jpeg.JPEGImageWriteParam(                null);        // 要使用压缩,必须指定压缩方式为MODE_EXPLICIT        imgWriteParams.setCompressionMode(imgWriteParams.MODE_EXPLICIT);        // 这里指定压缩的程度,参数qality是取值0~1范围内,        imgWriteParams.setCompressionQuality((float)0.4);        imgWriteParams.setProgressiveMode(imgWriteParams.MODE_DISABLED);        try{            if(isBlank(srcFilePath)){                return false;            }else{                file=new File(srcFilePath);System.out.println(file.length());                src=ImageIO.read(file);                out=new FileOutputStream(descFilePath);                imgWrier.reset();                // 必须先指定 out值,才能调用write方法, ImageOutputStream可以通过任何                // OutputStream构造                imgWrier.setOutput(ImageIO.createImageOutputStream(out));                // 调用write方法,就可以向输入流写图片                imgWrier.write(null,new IIOImage(src,null,null), imgWriteParams);                out.flush();                out.close();            }        }catch(Exception e){            e.printStackTrace();            return false;        }        return true;    }    public static boolean isBlank(String string){        if(string==null||string.length()==0||string.trim().equals("")){            return true;        }        return false;    }}
这里设置压缩后图片质量为原图的0.4,需要jar包
0 0
原创粉丝点击