java图片压缩

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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值