Java 動態圖片壓縮


今天收到領導的一個任務,說是圖片太大導致服務器那邊無法解析,要求圖片大小大於102*126就壓縮大小為102*126.同時文件是以Base64字符串的形式傳過來的。具體壓縮方法如下:

/**
 * 圖片大於102*126就調整為102*126
 * @param base64String
 * @return
 * @throws IOException 
 */
private String changePicSize(String base64String) throws IOException {
    byte[] bs = Base64.getDecoder().decode(base64String);
    InputStream input = new ByteArrayInputStream(bs);
    Image bi = ImageIO.read(input);

    if (bi.getWidth(null) > 102 || bi.getHeight(null) > 126) {
        System.out.print("壓縮\t");
        BufferedImage tag = new BufferedImage(102, 126, BufferedImage.TYPE_INT_RGB);
        tag.getGraphics().drawImage(bi, 0, 0, 102, 126, null);

        ByteArrayOutputStream out = new ByteArrayOutputStream();
        ImageIO.write(tag, "PNG", out);
        byte[] byt = out.toByteArray();
        
        out.close();
        bi.flush();
        input.close();            
        return Base64.getEncoder().encodeToString(byt);
    }else{        
        System.out.print("不壓縮\t");
        bi.flush();
        input.close();            
        return base64String;
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM