Java

java 이미지 저장 시 손실 최소화

I장군T 2022. 3. 22. 10:29
반응형

java에서 이미지 저장 시 손실 최소화

import java.awt.image.BufferedImage;

import java.io.BufferedReader;

import java.io.ByteArrayInputStream;

import java.io.File;

import java.io.FileReader;

import javax.imageio.IIOImage;

import javax.imageio.ImageIO;

import javax.imageio.ImageWriteParam;

import javax.imageio.ImageWriter;

import javax.imageio.plugins.jpeg.JPEGImageWriteParam;

import javax.imageio.stream.FileImageOutputStream;

import org.apache.commons.codec.binary.Base64;

public static void main(String[] args) {

    try{

        BufferedReader in = new BufferedReader(new FileReader("E:\\TEST\\004.log"));

        String s;

        while ((s = in.readLine()) != null) {

            byte[] imageByteArray = Base64.decodeBase64(s.toString());

            BufferedImage image = ImageIO.read(new ByteArrayInputStream(imageByteArray));

            int width = image.getWidth();

            int height = image.getHeight(); // 파일명 자르기

            BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.SCALE_SMOOTH);

            bufferedImage.createGraphics().drawImage(image, 0, 0, null); // 해당경로에 이미지 저장

            JPEGImageWriteParam jpegParams = new JPEGImageWriteParam(null);

            jpegParams.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);

            jpegParams.setCompressionQuality(1f);

            final ImageWriter writer = ImageIO.getImageWritersByFormatName("jpg").next();

            // specifies where the jpg image has to be written

            writer.setOutput(new FileImageOutputStream( new File("E:\\TEST\\010.jpg")));

            writer.write(null, new IIOImage(bufferedImage, null, null), jpegParams);

            String fileName = "E:\\TEST\\011.jpg";

            ImageIO.write(bufferedImage, "jpg", new File(fileName));

        }

    }catch(Exception e) {

        e.printStackTrace();

    }

}

반응형