Wie man mit Golang einzelne Bilder einfärbt, verarbeitet und tonisiert
Zusammenfassung: In diesem Artikel wird vorgestellt, wie man mit der Programmiersprache Golang separate Bilder einfärben, verarbeiten und tonen kann. Wir werden die Bildverarbeitungsbibliothek in Golang verwenden, um diese Funktionen zu implementieren und den spezifischen Implementierungsprozess anhand von Codebeispielen zu demonstrieren.
package main import ( "image" "image/color" "image/jpeg" "log" "os" ) func main() { // 打开图片文件 file, err := os.Open("input.jpg") if err != nil { log.Fatal(err) } defer file.Close() // 解码图片 img, err := jpeg.Decode(file) if err != nil { log.Fatal(err) } // 创建一个新的灰度化图片 grayImg := image.NewGray(img.Bounds()) // 遍历图片像素,将每个像素灰度化 for x := 0; x < img.Bounds().Max.X; x++ { for y := 0; y < img.Bounds().Max.Y; y++ { c := img.At(x, y) gray := color.GrayModel.Convert(c) grayImg.Set(x, y, gray) } } // 保存灰度化后的图片 outFile, err := os.Create("output.jpg") if err != nil { log.Fatal(err) } defer outFile.Close() jpeg.Encode(outFile, grayImg, nil) }
Im obigen Code öffnen wir zunächst eine Bilddatei mit dem Namen input.jpg über die Open-Funktion des Betriebssystempakets. Verwenden Sie dann die Decode-Funktion des JPEG-Pakets, um das Bild zu dekodieren und ein image.Image-Objekt zu erhalten. Als nächstes erstellen wir ein neues Graustufenbild mit der NewGray-Funktion des Bildpakets. Verwenden Sie dann eine Doppelschleife, um die Pixel des Originalbilds zu durchlaufen, den entsprechenden Graustufenwert anhand des Farbwerts des Pixels zu berechnen und ihn als Pixelwert des neuen Graustufenbilds festzulegen. Verwenden Sie abschließend die Encode-Funktion des JPEG-Pakets, um das Graustufenbild in der Datei „output.jpg“ zu speichern.
package main import ( "image" "image/color" "image/jpeg" "log" "os" ) func main() { // 打开图片文件 file, err := os.Open("input.jpg") if err != nil { log.Fatal(err) } defer file.Close() // 解码图片 img, err := jpeg.Decode(file) if err != nil { log.Fatal(err) } // 创建一个新的彩色图片 colorImg := image.NewRGBA(img.Bounds()) // 遍历图片像素,将每个像素的R、G、B颜色值分离出来 for x := 0; x < img.Bounds().Max.X; x++ { for y := 0; y < img.Bounds().Max.Y; y++ { c := img.At(x, y) r, g, b, _ := c.RGBA() colorImg.Set(x, y, color.RGBA{R: uint8(r), G: 0, B: 0}) } } // 保存分离后的图片 outFile, err := os.Create("output.jpg") if err != nil { log.Fatal(err) } defer outFile.Close() jpeg.Encode(outFile, colorImg, nil) }
Im obigen Code haben wir die RGBA-Funktion des Bild-/Farbpakets verwendet, um die Pixelfarbwerte des Originalbilds zu trennen und zu erstellen a Neue Farbbilder. Anschließend werden durch Durchlaufen der Pixel des Originalbilds die R-, G- und B-Farbwerte jedes Pixels getrennt und die Werte von G und B auf 0 gesetzt, wodurch die Farbtontrennungsoperation realisiert wird Bild. Verwenden Sie abschließend die Encode-Funktion des JPEG-Pakets, um das separierte Bild in der Datei „output.jpg“ zu speichern.
Das obige ist der detaillierte Inhalt vonSo färben Sie Bilder mit Golang ein und trennen sie farblich voneinander. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!