package kr.lunaticbum.back.lun.utils

import java.awt.Color
import java.awt.image.BufferedImage


object ImageUtils {
    /**
     * 투명한 배경을 가진 BufferedImage를 흰색 배경으로 변환합니다.
     * @param sourceImage 원본 이미지
     * @return 흰색 배경이 적용된 새 BufferedImage
     */
    fun convertTransparentToWhite(sourceImage: BufferedImage): BufferedImage {
        // 원본 이미지에 알파 채널이 없으면 그대로 반환
        if (!sourceImage.getColorModel().hasAlpha()) {
            return sourceImage
        }

        // 원본과 같은 크기, 하지만 알파 채널이 없는(RGB) 새 이미지를 생성
        val newImage = BufferedImage(
            sourceImage.getWidth(),
            sourceImage.getHeight(),
            BufferedImage.TYPE_INT_RGB // 알파 채널이 없는 타입
        )

        // 새 이미지의 Graphics2D 컨텍스트를 얻음 (그림을 그릴 도구)
        val g2d = newImage.createGraphics()

        try {
            // 1. 새 이미지의 배경을 흰색으로 완전히 칠합니다.
            g2d.setColor(Color.WHITE)
            g2d.fillRect(0, 0, newImage.getWidth(), newImage.getHeight())

            // 2. 흰색 배경 위에 원본 이미지를 그립니다. (투명한 부분은 흰색 배경이 비침)
            g2d.drawImage(sourceImage, 0, 0, null)
        } finally {
            // 리소스를 해제합니다.
            g2d.dispose()
        }

        return newImage
    }
}