Traitement d'image Golang : Apprenez à effectuer l'inversion des couleurs et la séparation des tons des images
Introduction :
Avec le développement de la technologie de traitement d'image numérique, la façon d'effectuer divers traitements d'effets spéciaux sur les images est devenue une compétence importante. Dans Golang, nous pouvons utiliser sa puissante bibliothèque de traitement d'image pour obtenir divers effets de traitement d'image. Cet article se concentrera sur la façon d'utiliser Golang pour effectuer l'inversion des couleurs et la séparation des tons des images.
L'inversion des couleurs est un effet de traitement d'image simple et courant. Avec l’inversion des couleurs, nous pouvons échanger la couleur normale d’une image avec son opposé, créant ainsi un effet complètement différent.
Exemple de code :
package main import ( "fmt" "image" "image/color" "image/jpeg" "log" "os" ) func main() { // 读取示例图片 file, err := os.Open("example.jpg") if err != nil { log.Fatal(err) } defer file.Close() // 解码图片 img, err := jpeg.Decode(file) if err != nil { log.Fatal(err) } // 获取图片宽高 bounds := img.Bounds() width, height := bounds.Max.X, bounds.Max.Y // 创建新图片 newImg := image.NewRGBA(bounds) // 图片颜色反转 for i := 0; i < height; i++ { for j := 0; j < width; j++ { // 获取像素点颜色 oldColor := img.At(j, i) r, g, b, _ := oldColor.RGBA() // 计算反转后的颜色 newR, newG, newB := 255-r, 255-g, 255-b // 设置新像素点颜色 newColor := color.RGBA{uint8(newR), uint8(newG), uint8(newB), 0xff} newImg.Set(j, i, newColor) } } // 创建保存结果的文件 resultFile, err := os.Create("result.jpg") if err != nil { log.Fatal(err) } defer resultFile.Close() // 保存结果图片 if err := jpeg.Encode(resultFile, newImg, &jpeg.Options{100}); err != nil { log.Fatal(err) } fmt.Println("图片颜色反转完成") }
La postérisation est une méthode courante de traitement d'effets spéciaux qui peut créer des effets visuels distinctifs en convertissant des images colorées en images ne contenant qu'un petit nombre de couleurs principales.
Exemple de code :
package main import ( "fmt" "image" "image/color" "image/jpeg" "log" "os" ) func main() { // 读取示例图片 file, err := os.Open("example.jpg") if err != nil { log.Fatal(err) } defer file.Close() // 解码图片 img, err := jpeg.Decode(file) if err != nil { log.Fatal(err) } // 获取图片宽高 bounds := img.Bounds() width, height := bounds.Max.X, bounds.Max.Y // 创建新图片 newImg := image.NewRGBA(bounds) // 图片色调分离 for i := 0; i < height; i++ { for j := 0; j < width; j++ { // 获取像素点颜色 oldColor := img.At(j, i) r, g, b, _ := oldColor.RGBA() // 计算色调分离后的颜色 newR := (r/65535)*65535/2 + 32767 newG := (g/65535)*65535/2 + 32767 newB := (b/65535)*65535/2 + 32767 // 设置新像素点颜色 newColor := color.RGBA{uint8(newR), uint8(newG), uint8(newB), 0xff} newImg.Set(j, i, newColor) } } // 创建保存结果的文件 resultFile, err := os.Create("result.jpg") if err != nil { log.Fatal(err) } defer resultFile.Close() // 保存结果图片 if err := jpeg.Encode(resultFile, newImg, &jpeg.Options{100}); err != nil { log.Fatal(err) } fmt.Println("图片色调分离完成") }
Résumé :
Cet article explique comment utiliser Golang pour effectuer l'inversion des couleurs et la séparation des tons des images. Grâce à des exemples de code, nous avons appris à lire et décoder des images, à effectuer des opérations au niveau des pixels sur les images et enfin à générer l'image résultante. J'espère qu'en étudiant cet article, les lecteurs pourront se familiariser davantage avec les connaissances liées au traitement d'image Golang et maîtriser la capacité de mettre en œuvre divers traitements d'effets spéciaux d'image.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!