首頁  >  文章  >  Java  >  Java如何實作壓縮圖片大小

Java如何實作壓縮圖片大小

WBOY
WBOY轉載
2023-04-19 16:28:122190瀏覽

使用場景:

1.當使用圖片上傳功能時,上傳圖片太大,造成對伺服器資源過多的佔用
2.客戶端上傳圖片尺寸大小不一,前端需要展示給使用者固定尺寸時,可透過java進行對上傳圖片統一處理

#功能預覽

#1.壓縮前

Java如何實作壓縮圖片大小

2.壓縮後

Java如何實作壓縮圖片大小

程式碼實作:

package com.linghu.test;

import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;

import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

/*
 * @author 在下令狐
 * @describe  压缩图片大小
 * @date 2020/6/12
 */
public class TestCompressImage {
    public static void main(String[] args) {
        try {
            //图片所在路径
            BufferedImage templateImage = ImageIO.read(new File("f:/temp/linghu.jpg"));


            //原始图片的长度和宽度
            int height = templateImage.getHeight();
            int width = templateImage.getWidth();

            //通过比例压缩
            float scale = 0.5f;

            //通过固定长度压缩
            /*int doWithHeight = 100;
            int dowithWidth = 300;*/

            //压缩之后的长度和宽度
            int doWithHeight = (int) (scale * height);
            int dowithWidth = (int) (scale * width);

            BufferedImage finalImage = new BufferedImage(dowithWidth, doWithHeight, BufferedImage.TYPE_INT_RGB);

            finalImage.getGraphics().drawImage(templateImage.getScaledInstance(dowithWidth, doWithHeight, java.awt.Image.SCALE_SMOOTH), 0, 0, null);


            //图片输出路径,以及图片名
            FileOutputStream  fileOutputStream = new FileOutputStream("f:/temp/linghuAfterDoWith.jpg");
            JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(fileOutputStream);
            encoder.encode(finalImage);
            fileOutputStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

以上是Java如何實作壓縮圖片大小的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除