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();
}
}
'Java' 카테고리의 다른 글
window SDKMAN 설치 (0) | 2023.06.14 |
---|---|
spring boot properties 여러개(분기) 동적으로 사용하는 방법 (0) | 2022.05.31 |
로컬에 있는 jar파일 추가하는 방법(gradle) (0) | 2022.05.31 |
Mapper로 SQL 호출하기 (0) | 2022.04.08 |
no main manifest attribute in 오류 발생 (0) | 2022.04.08 |