Golang으로 이미지에 텍스트 넣기
3454 단어 tutorialprogramminggo
내가 요약하여 구축하는 서비스는 주어진 이미지에 일부 텍스트를 넣습니다. 주요 목적은 내가 Instagram 계정에 게시하는 게시물을 만드는 데 도움을 주는 것입니다.
예전에는 Photoshop으로 게시물을 만들었지만 간단한 이미지를 준비하는 데 너무 많은 시간이 걸렸고 흐름을 약간 단순화한 것을 발견했습니다Adobe Spark. Telegram Bot과 이제 메시지만 보내면 내 이미지를 게시할 수 있습니다. 예, 개선의 여지가 있지만 GoLang에 익숙해지고 내 Instagram용 이미지를 만드는 프로세스를 단순화하는 데 도움이 되는 것이 임무인 PoC일 뿐이라는 점을 명심하십시오.
TL;DR 코드를 보여주세요!
type Request struct {
BgImgPath string
FontPath string
FontSize float64
Text string
}
func TextOnImg(request Request) (image.Image, error) {
bgImage, err := gg.LoadImage(request.BgImgPath)
if err != nil {
return nil, err
}
imgWidth := bgImage.Bounds().Dx()
imgHeight := bgImage.Bounds().Dy()
dc := gg.NewContext(imgWidth, imgHeight)
dc.DrawImage(bgImage, 0, 0)
if err := dc.LoadFontFace(request.FontPath, request.FontSize); err != nil {
return nil, err
}
x := float64(imgWidth / 2)
y := float64((imgHeight / 2) - 80)
maxWidth := float64(imgWidth) - 60.0
dc.SetColor(color.White)
dc.DrawStringWrapped(request.Text, x, y, 0.5, 0.5, maxWidth, 1.5, gg.AlignCenter)
return dc.Image(), nil
}
그 코드 조각은 모든 마법을 만듭니다. Fogleman library의 도움으로 Go에서 이미지를 조작하는 것은 매우 쉽습니다. 이것이 무엇을 하는지 확인해 봅시다:
bgImage, err := gg.LoadImage(request.BgImgPath)
텍스트가 인쇄될 이미지를 로드합니다.
imgWidth := bgImage.Bounds().Dx()
imgHeight := bgImage.Bounds().Dy()
이미지의
Width
및 Height
를 기록합니다.dc := gg.NewContext(imgWidth, imgHeight)
dc.DrawImage(bgImage, 0, 0)
작업을 시작할 캔버스(또는 컨텍스트)와 같은 것을 만듭니다.
dc.LoadFontFace(request.FontPath, request.FontSize)
인쇄할 메시지에 사용할 글꼴을 로드합니다.
x := float64(imgWidth / 2)
y := float64((imgHeight / 2) - 80)
X에 이미지의 중간을 기록하고 Y에서도 텍스트가 중간보다 약간 위에 있기를 원하기 때문에 80을 뺍니다.
maxWidth := float64(imgWidth) - 60.0
텍스트가 차지할 수 있는 최대 너비를 정의합니다. 이미지의 전체 너비에서 60을 빼는 것은 여백을 생성하는 것과 같으므로 텍스트가 이미지 가장자리에 닿지 않습니다.
dc.SetColor(color.White)
페인트/인쇄할 색상을 정의하고 있습니다.
dc.DrawStringWrapped(request.Text, x, y, 0.5, 0.5, maxWidth, 1.5, gg.AlignCenter)
중앙 정렬로 이미지 중간에 캔버스에
request.Text
의 내용을 인쇄합니다.결과는 다음과 같습니다.
이 모든 것이 어떻게 작동하는지에 대한 자세한 내용을 보려면 the DevsQuotesPrinter repository을 방문하십시오. GCP, Heroku에 배포하거나 로컬에서 사용해 볼 수 있는 지침이 있으므로 자유롭게 사용해 보십시오.
Reference
이 문제에 관하여(Golang으로 이미지에 텍스트 넣기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/josemyduarte/putting-text-on-an-image-with-golang-551j텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)