java 修改圖片的像素大小,清晰度

修改圖片的像素,清晰度

代碼

/**
     * 改變圖片 像素
     *
     * @param file
     * @param qality 參數qality是取值0~1範圍內  清晰程度  數值越小分辨率越低
     * @param imageType 圖片寫出類型 好比 jpg
     * @return
     * @throws IOException
     */
    public static File compressPictureByQality(File file, float qality,String imageType) throws IOException {
        BufferedImage src = null;
        FileOutputStream out = null;
        ImageWriter imgWrier;
        ImageWriteParam imgWriteParams;
        logger.info("開始設定壓縮圖片參數");
        // 指定寫圖片的方式爲 jpg
        imgWrier = ImageIO.getImageWritersByFormatName(imageType).next();
        imgWriteParams = new javax.imageio.plugins.jpeg.JPEGImageWriteParam(
                null);
        // 要使用壓縮,必須指定壓縮方式爲MODE_EXPLICIT
        imgWriteParams.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
        // 這裏指定壓縮的程度,參數qality是取值0~1範圍內,
        imgWriteParams.setCompressionQuality(qality);
        imgWriteParams.setProgressiveMode(ImageWriteParam.MODE_DISABLED);
        ColorModel colorModel = ImageIO.read(file).getColorModel();// ColorModel.getRGBdefault();
        imgWriteParams.setDestinationType(new javax.imageio.ImageTypeSpecifier(
                colorModel, colorModel.createCompatibleSampleModel(32, 32)));
        logger.info("結束設定壓縮圖片參數");
        if (!file.exists()) {
            logger.info("Not Found Img File,文件不存在");
            throw new FileNotFoundException("Not Found Img File,文件不存在");
        } else {
            logger.info("圖片轉換前大小" + file.length() + "字節");
            src = ImageIO.read(file);
            out = new FileOutputStream(file);
            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();
            logger.info("圖片轉換後大小" + file.length() + "字節");
            return file;
        }
    }

原圖

image

修改以後的圖

image

相關文章
相關標籤/搜索