Java 图片压缩简版


    public void test1() throws IOException {
        File file1 = new File("D:\\备份-工作\\Other\\Project\\comment\\image_compress");
        File[] files2 = file1.listFiles();

        for (int i = 0; i < files2.length; i++) {
            File file = files2[i];
            int fileSize = (int) file.length() / 1024 / 1024;
            Picture picture = new Picture();
            String rootDir = URLDecoder.decode(System.getProperty("user.dir"), "utf-8");// URLDecoder.decode 解决文件路径中的空格问题
            String newfilename = file.getName();


            // 原始文件
            String tempDir = rootDir + "/image_compress/";
            String tempPath = tempDir + newfilename;
            if (!FileUtil.file(tempDir).exists()) {
                FileUtil.file(tempDir).mkdirs();
            }

            // 压缩
            BufferedImage bufferedImage = ImageIO.read(file);
            picture.setPic_height(bufferedImage.getHeight());
            picture.setPic_width(bufferedImage.getWidth());
            bufferedImage = null;

            // 压缩图
            String compressDir = rootDir + "/image_compress2/";
            String compressPath = compressDir + newfilename;
            if (!FileUtil.file(compressDir).exists()) {
                FileUtil.file(compressDir).mkdirs();
            }

            // 图片压缩 / 图片等比例缩放
            int maxPicWidth = 1242;
            int maxPicHeight = 1546;

            if ((maxPicWidth > 0) && (picture.getPic_width() > maxPicWidth)) {
                // 指定宽度缩放
                int picWidth = maxPicWidth;
                int picHeight = Integer.parseInt(maxPicWidth * picture.getPic_height() / picture.getPic_width() + "");
                ImgUtil.scale(file, FileUtil.file(compressPath), picWidth, picHeight, java.awt.Color.WHITE);

            } else if ((maxPicHeight > 0) && (picture.getPic_height() > maxPicHeight)) {
                // 指定高度缩放
                int picWidth = Integer.parseInt(maxPicHeight * picture.getPic_width() / picture.getPic_height() + "");
                int picHeight = maxPicHeight;
                ImgUtil.scale(file, FileUtil.file(compressPath), picWidth, picHeight, java.awt.Color.WHITE);

            } else {
                // 仅压缩
                if (fileSize >= 1) {
                    ImgUtil.compress(file, FileUtil.file(compressPath), 0.9F);
                } else {
                    FileUtil.copyFile(tempPath, compressPath);
                }
            }
        }
    }
posted @ 2022-10-17 17:06  古兴越  阅读(78)  评论(0编辑  收藏  举报