상세 컨텐츠

본문 제목

[Golang]PNG 파일 JPG 로 변환하기

Golang

by stayhungri 2022. 6. 24. 13:03

본문

PNG 파일을 JPG 로 변환할 때는 이렇게 하면 됩니다.

PNG -> RGBA -> JPG

코드로 살펴볼게요

func convertPNGtoJPG() {
	// PNG 파일을 디코딩합니다.
	pngImgFile, err := os.Open("./image/whyoh1.png")
	if err != nil {
		log.Fatalf("png file not found : %+v", err)
	}
	defer pngImgFile.Close()

	imgSrc, err := png.Decode(pngImgFile)
	if err != nil {
		log.Fatalf("failed to decode png file %+v", err)
	}

	// PNG 파일을 RGBA로 바꿉니다. 투명한 뿐은 하얀색으로 처리합니다.
	newImg := image.NewRGBA(imgSrc.Bounds())
	draw.Draw(newImg, newImg.Bounds(), &image.Uniform{C: color.White}, image.Point{}, draw.Src)
	draw.Draw(newImg, newImg.Bounds(), imgSrc, imgSrc.Bounds().Min, draw.Over)

	// JPG 형태로 인코딩합니다.
	jpgImgFile, err := os.Create("./image/whyoh1.jpg")
	if err != nil {
		log.Fatalf("failed to create file: %+v", err)
	}
	defer jpgImgFile.Close()

	var opt jpeg.Options
	opt.Quality = 50
	err = jpeg.Encode(jpgImgFile, newImg, nil)
	if err != nil {
		log.Fatalf("failed to encode: %+v", err)
	}

	log.Printf("converted PNG file to JPEG file")
}

관련글 더보기