자바에서는 imageIO 클래스를 이용해 이미지를 컨트롤 할 수 있다.
이미지 포맷 변환 프로세스
- 사용자가 파일 저장
- 서버단에서 파일 전송 후 png 파일인 경우 파일 포맷을 변경
- 변환된 jpg 파일 저장
multipartFile 타입 File 타입으로 캐스팅
public static File multipartFileToFile(MultipartFile file) throws IOException {
File convFile = new File(file.getOriginalFilename());
convFile.createNewFile();
FileOutputStream fos = new FileOutputStream(convFile);
fos.write(file.getBytes());
fos.close();
return convFile;
}
File beforeFile = new File(PATH + fileName + "_" + fileUploadTime + "." + fileType);
File afterFile = new File(PATH + fileName + "_" + fileUploadTime + ".jpg");
BufferedImage beforeImg = ImageIO.read(beforeFile);
read 로 생성된 file 인스턴스로부터 이미지를 읽거나 지정된 Url을 이용해 이미지를 읽어올 수 있다.
BufferedImage afterImg = new BufferedImage(beforeImg.getWidth(), beforeImg.getHeight(), BufferedImage.TYPE_INT_RGB);
읽어온 이미지로 BuffredImage를 구해서 이미지를 jpg 파일로 변환하기 위한 작업을 한다.
afterImg.createGraphics().drawImage(beforeImg, 0, 0, Color.white, null);
createGraphics() 메소드 호출로 BufferImage에 그림을 그릴 수 있게 Graphics2D 객체를 먼저 구현하고,
구현된 Graphics2D 객체를 사용해 원본 BufferdImage(beforeImg)를 변환 이미지 객체(afterImg)에 그려넣는다.
ImageIO.write(afterImg, "jpg", afterFile);
jpg로 출력
'Springboot' 카테고리의 다른 글
JPA CascadeType 종류와 부모 테이블 삭제 (0) | 2023.08.16 |
---|---|
SpringBoot/한글파일(.hwp) 데이터 바인딩 후 다운로드 하기 (0) | 2023.08.16 |
Spring boot docker image로 배포시 타임존 설정 방법 (0) | 2023.08.16 |
Thread starvation or clock leap detected, Dead Lock, hikari 오류 해결 (0) | 2023.08.16 |
JPA /save , saveAll 사용시 주의 사항들 (0) | 2023.08.16 |