在 Golang 中更改 JPEG 影像中單一像素的顏色
嘗試變更 JPEG 影像中的像素顏色時會出現挑戰使用Go。為了實現這一點,有必要以允許更改其像素的方式操作影像。
通常, image.Decode() 函數傳回 image.Image 類型的值,它表示讀取- 僅影像視圖。然而,有多種 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:建立新的Changeable圖片
如果需要改變多個像素,建立一個新的可改變的影像,將原始影像繪製到其上,然後製作所需的效果會更有效率地改變。您可以使用 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中文網其他相關文章!