[kotlin] 코틀린에서의 이미지 변환 함수

이미지 변환은 많은 애플리케이션에서 중요한 작업 중 하나입니다. 코틀린은 이미지 변환을 처리하는 강력한 기능을 제공하는데, 이번 블로그 포스트에서는 코틀린에서 이미지 변환 함수를 작성하는 방법에 대해 알아보겠습니다.

이미지 변환 함수 작성하기

코틀린에서 이미지 변환 함수를 작성하려면 java.awt 패키지의 BufferedImage 클래스를 사용해야 합니다. 이 클래스는 이미지 데이터를 저장하고 다양한 이미지 변환 작업을 수행하는 데 사용됩니다.

다음은 코틀린에서 이미지를 회전시키는 함수의 예입니다.

import java.awt.geom.AffineTransform
import java.awt.image.AffineTransformOp
import java.awt.image.BufferedImage

fun rotateImage(image: BufferedImage, degrees: Double): BufferedImage {
    val radians = Math.toRadians(degrees)
    val rotation = AffineTransform.getRotateInstance(radians, image.width.toDouble() / 2, image.height.toDouble() / 2)
    val op = AffineTransformOp(rotation, AffineTransformOp.TYPE_BILINEAR)
    return op.filter(image, null)
}

위의 코드에서는 rotateImage라는 함수를 작성하고, 입력으로 받은 image를 주어진 degrees만큼 회전시킵니다. 이를 위해 AffineTransformAffineTransformOp 클래스를 사용하며, AffineTransformOp.TYPE_BILINEAR를 사용하여 회전된 이미지를 반환합니다.

다음은 이미지를 그레이스케일로 변환하는 함수의 예입니다.

fun convertToGrayScale(image: BufferedImage): BufferedImage {
    val grayImage = BufferedImage(image.width, image.height, BufferedImage.TYPE_BYTE_GRAY)
    val graphics = grayImage.createGraphics()
    graphics.drawImage(image, 0, 0, null)
    graphics.dispose()
    return grayImage
}

위의 코드에서는 convertToGrayScale라는 함수를 작성하고, 입력으로 받은 image를 그레이스케일로 변환합니다. BufferedImage.TYPE_BYTE_GRAY를 사용하여 새로운 이미지를 생성하고, graphics.drawImage를 사용하여 입력 이미지를 그레이스케일 이미지에 그립니다.

함수 사용하기

이미지 변환 함수를 사용하려면 다음과 같은 방법으로 호출할 수 있습니다.

import javax.imageio.ImageIO
import java.io.File

fun main() {
    // 이미지 파일 경로 설정
    val imagePath = "path/to/image.jpg"

    // 이미지 파일 로드
    val imageFile = File(imagePath)
    val image = ImageIO.read(imageFile)

    // 이미지 회전
    val rotatedImage = rotateImage(image, 90.0)

    // 이미지 그레이스케일 변환
    val grayScaleImage = convertToGrayScale(rotatedImage)

    // 변환된 이미지 저장
    val outputImagePath = "path/to/output.jpg"
    val outputFile = File(outputImagePath)
    ImageIO.write(grayScaleImage, "jpg", outputFile)
}

위의 코드에서는 main 함수에서 이미지 파일을 로드하고, rotateImageconvertToGrayScale 함수를 사용하여 이미지를 변환한 후, 변환된 이미지를 지정된 경로에 저장하는 예제입니다.

마무리

이번 포스트에서는 코틀린에서 이미지 변환 함수를 작성하는 방법을 알아보았습니다. 코틀린의 BufferedImage 클래스와 AffineTransform를 활용하면 다양한 이미지 변환 작업을 쉽게 처리할 수 있습니다. 이러한 이미지 변환 함수는 애플리케이션에서 이미지 처리에 필요한 다양한 작업을 수행하는 데 유용하게 활용될 수 있습니다.

참고 자료: