Java реализует пакетное сжатие пикселей изображения

Java задняя часть
Java реализует пакетное сжатие пикселей изображения

В последнее время, поскольку компании необходимо загрузить конкретный скриншот функции тестового примера для сертификации xxx, и она обнаружила, что существует ограничение по размеру, она сжимает изображение и записывает его на короткое время.

Размер до сжатия:

image.png

Сжатый размер:

image.png

Конкретная реализация кода:

тест основного метода:

 public static void main(String[] args) throws IOException {
        String modpath = "C:\\Users\\Administrator\\Desktop\\鲲鹏认证\\test\\";
        getFiles("C:\\Users\\Administrator\\Desktop\\鲲鹏认证\\测试用例清单", modpath, 160);//将图片压缩至100宽
    }

обработка размера файла

/**
     * @param srcPath 原图片路径
     * @param desPath 转换大小后图片路径
     * @param width   转换后图片宽度
     * @param height  转换后图片高度
     */
    public static void resizeImage(String srcPath, String desPath, int width, int height) throws IOException {


        File srcFile = new File(srcPath);
        Image srcImg = ImageIO.read(srcFile);
        BufferedImage buffImg = null;
        buffImg = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
        //使用TYPE_INT_RGB修改的图片会变色
        buffImg.getGraphics().drawImage(srcImg.getScaledInstance(width, height, Image.SCALE_SMOOTH), 0, 0, null);
        String filePath="";
        if (srcFile.getName().contains("#")) {
             filePath = srcFile.getName().replace("#", "");
        }else{
            filePath=srcFile.getName();
        }
        ImageIO.write(buffImg, "PNG", new File(desPath + filePath));
    }

Получить информацию о файле каталога

/**
     * @param scaleSize 图片的修改比例,目标宽度
     */
    public static void getFiles(String path, String modPath, int scaleSize) throws IOException {
        ArrayList<String> files = new ArrayList<String>();
        File file = new File(path);
        File[] tempList = file.listFiles();
        //循环读取目录下图片
        for (int i = 0; i < tempList.length; i++) {
            String filePath = tempList[i].getName();
            if (tempList[i].isFile()) {

                System.out.println("文件:" + filePath + "-" + tempList[i].getAbsolutePath().replaceAll("\\\\", "/"));
                String[] imagePath = tempList[i].getAbsolutePath().replaceAll("\\\\", "/").split("/");
                String imageNumber = null;
                FileUtil.resizeImage(tempList[i].getAbsolutePath().replaceAll("\\\\", "/"), modPath, 160, 160);
                files.add(tempList[i].toString());
            }
            if (tempList[i].isDirectory()) {
                  System.out.println("文件夹:" + tempList[i]);
            }
        }
        System.out.println(path + "下文件数量:" + files.size());
    }

Сжатие каталога консоли успешно сохранено на букву диска:

image.png

ВсеНравится, Избранное, Следите, КомментируйтеЭй, проверьте обновление статьи112/ 365 дней