Golang에서 JPEG 이미지의 단일 픽셀 색상 변경
JPEG 이미지 내에서 픽셀 색상을 변경하려고 할 때 문제가 발생합니다. Go를 사용합니다. 이를 달성하려면 픽셀 변경을 허용하는 방식으로 이미지를 조작해야 합니다.
일반적으로 image.Decode() 함수는 읽기를 나타내는 image.Image 유형의 값을 반환합니다. - 이미지만 볼 수 있습니다. 그러나 다양한 이미지가 있습니다. 일반적으로 Set() 메서드를 통해 픽셀 색상을 변경하는 기능을 제공하는 이미지 구현입니다.
옵션 1: 변경 가능한 유형 확인
한 가지 접근 방식은 이미지가 픽셀 변경을 지원하는지 확인하는 것입니다. 그렇다면 이미지를 입력하고 Set() 메서드를 호출하여 그 위에 그릴 수 있습니다.
if cimg, ok := img.(Changeable); ok { cimg.Set(0, 0, color.RGBA{85, 165, 34, 255}) cimg.Set(1, 0, ...) }
옵션 2: 사용자 정의 이미지 유형 구현
이미지가 픽셀 변경을 지원하지 않는 경우 image.Image 인터페이스를 구현하는 사용자 정의 유형을 구현할 수 있습니다. 픽셀 색상을 반환하는 At() 메서드에서는 변경되지 않은 영역에 대해 원래 픽셀 색상을 반환하면서 특정 좌표에 대해 변경된 색상을 지정할 수 있습니다.
type MyImg struct { image.Image } func (m *MyImg) At(x, y int) color.Color { switch { case x == 0 && y == 0: return color.RGBA{85, 165, 34, 255} } return m.Image.At(x, y) }
옵션 3: 새 변경 가능 항목 만들기 이미지
여러 픽셀을 변경해야 하는 경우 변경 가능한 새 이미지를 만들고 그 위에 원본 이미지를 그린 다음 원하는 대로 만드는 것이 더 효율적일 수 있습니다. 변화. 이 목적으로 image/draw 패키지를 사용할 수 있습니다.
cimg := image.NewRGBA(img.Bounds()) draw.Draw(cimg, img.Bounds(), img, image.Point{}, draw.Over) cimg.Set(0, 0, color.RGBA{85, 165, 34, 255})
위 내용은 Go를 사용하여 JPEG의 단일 픽셀 색상을 어떻게 변경할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!