Springboot

java 이미지 포맷 변환 / png to jpg

25G 2023. 8. 16. 19:16

자바에서는 imageIO 클래스를 이용해 이미지를 컨트롤 할 수 있다.

이미지 포맷 변환 프로세스

  1. 사용자가 파일 저장
  2. 서버단에서 파일 전송 후 png 파일인 경우 파일 포맷을 변경
  3. 변환된 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로 출력