java压缩网络图片,压缩图片

package com.qxnw.healthserver.core.util;

import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.net.URL;

public class AliossUtil {
    /**目标图片大小,至于高度,等比例即可,ps:width在2000以上,已看不出区别*/
    public static final int TARGET_WIDTH = 3000;

    public static void main(String[] args) {
        String url = "https://img1.360buyimg.com/image/jfs/t1/38591/20/3737/314695/5cc69c01E1838df09/dd6dce681bd23031.jpg";
       resizeImg(url);
    }

    public static void resizeImg(String url){
        try {
            //通过url获取BufferedImage图像缓冲区
            URL img = new URL(url);
            BufferedImage image = ImageIO.read(img);
            //获取图片的宽、高
            double rate = image.getWidth()*1.0/image.getHeight();
            int targetHeight = (int) (TARGET_WIDTH*1.0/rate);
            //调整图片大小为 400X400尺寸
            BufferedImage newImage = resizeImage(image,TARGET_WIDTH,targetHeight);

            System.out.println("old:w,h= " + image.getWidth()+","+image.getHeight()+"\nnew:w,h="+TARGET_WIDTH+","+targetHeight);

            //将缓冲区图片保存到 F:/test/pic1.jpg (文件不存在会自动创建文件保存,文件存在会覆盖原文件保存)
            ImageIO.write(newImage, "jpg", new File("d:/a.png"));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /**
     * 通过BufferedImage图片流调整图片大小
     */
    public static BufferedImage resizeImage(BufferedImage originalImage, int targetWidth, int targetHeight) throws IOException {
        Image resultingImage = originalImage.getScaledInstance(targetWidth, targetHeight, Image.SCALE_AREA_AVERAGING);
        BufferedImage outputImage = new BufferedImage(targetWidth, targetHeight, BufferedImage.TYPE_INT_RGB);
        outputImage.getGraphics().drawImage(resultingImage, 0, 0, null);
        return outputImage;
    }
}

 

 
posted @ 2024-05-17 15:33  君子笑而不语  阅读(12)  评论(0编辑  收藏  举报