728x90
반응형
SMALL
스프링 프레임워크로 웹 사이트 운영하면서..이미지 표출때문에 느린 경우가 있다.
원본 사이즈 그대로 스트림으로 읽어와서 그런 문제가 발생을 할수있는데..
원본 다운로드 기능이 따로 있다면, img src로 보여지는것 자체는 압축을하여 용량을 낮춰 출력할 수 있다.
다만 화질은 조금 화질구리가 되지만..협의가 된상황이라면..괜춘..
ImageWriter 객체를 이용한다.
//이미지를 압축한다.
public static void compressImage(File imageFile, String destination) throws Exception {
File compressedImageFile = new File(destination);
InputStream is = new FileInputStream(imageFile);
OutputStream os = new FileOutputStream(compressedImageFile);
float quality = 0.2f; //0.1 ~ 1.0까지 압축되는 이미지의 퀄리티를 지정
//숫자가 낮을수록 화질과 용량이 줄어든다.
BufferedImage image = ImageIO.read(is);
Iterator<ImageWriter> writers = ImageIO.getImageWritersByFormatName("jpg");
if (!writers.hasNext())
throw new IllegalStateException("No writers found");
ImageWriter writer = (ImageWriter) writers.next();
ImageOutputStream ios = ImageIO.createImageOutputStream(os);
writer.setOutput(ios);
ImageWriteParam param = writer.getDefaultWriteParam();
param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
param.setCompressionQuality(quality);
writer.write(null, new IIOImage(image, null, null), param);
is.close();
os.close();
ios.close();
writer.dispose();
}
destination 경로에 임시 파일을 압축하여 이미지를 새로 write 하고,
이미지는 이렇게 만들어졌으니 해당 destination 경로에 있는 파일로 outputStream 써주고
파일을 delete(); 해주면 될것..
728x90
반응형
LIST
'Web&Spring' 카테고리의 다른 글
gson null 값도 응답 필드 포함되도록 처리 (0) | 2023.03.16 |
---|---|
gson toJson 응답시 한글 깨짐 문제 해결 (0) | 2023.03.16 |
nslookup 이용해서 도메인으로 ip 조회하기 (0) | 2023.03.16 |
ul li 계단식으로 배치될때 해결 (0) | 2023.03.16 |
This request has been blocked;the content must be served over HTTPS (0) | 2023.03.16 |