Manipulation d'image Golang : Comment régler la luminosité et le contraste
Introduction :
Dans le traitement d'image, ajuster la luminosité et le contraste d'une image est une tâche très courante. En ajustant la luminosité, nous pouvons rendre l'image plus claire ou plus sombre. Et en ajustant le contraste, nous pouvons augmenter ou diminuer les différences de couleur dans une image. Cet article expliquera comment utiliser Golang pour ajuster la luminosité et le contraste des images et fournira des exemples de code.
import ( "image" "image/color" _ "image/jpeg" _ "image/png" "os" )
func loadImage(path string) (image.Image, error) { file, err := os.Open(path) if err != nil { return nil, err } defer file.Close() img, _, err := image.Decode(file) if err != nil { return nil, err } return img, nil }
func adjustBrightness(img image.Image, level int) image.Image { bounds := img.Bounds() dest := image.NewRGBA(bounds) for y := bounds.Min.Y; y < bounds.Max.Y; y++ { for x := bounds.Min.X; x < bounds.Max.X; x++ { oldColor := img.At(x, y) r, g, b, a := oldColor.RGBA() r = uint32((int(r) * level) / 100) g = uint32((int(g) * level) / 100) b = uint32((int(b) * level) / 100) newColor := color.RGBA64{uint16(r), uint16(g), uint16(b), uint16(a)} dest.Set(x, y, newColor) } } return dest }
Dans le code ci-dessus, nous utilisons une boucle pour parcourir chaque pixel de l'image et ajuster la composante RVB de chaque pixel en fonction du niveau de luminosité donné.
func adjustContrast(img image.Image, level int) image.Image { bounds := img.Bounds() dest := image.NewRGBA(bounds) for y := bounds.Min.Y; y < bounds.Max.Y; y++ { for x := bounds.Min.X; x < bounds.Max.X; x++ { oldColor := img.At(x, y) r, g, b, a := oldColor.RGBA() r = uint32(128 + (int(r)-128)*level/100) g = uint32(128 + (int(g)-128)*level/100) b = uint32(128 + (int(b)-128)*level/100) newColor := color.RGBA64{uint16(r), uint16(g), uint16(b), uint16(a)} dest.Set(x, y, newColor) } } return dest }
Dans le code ci-dessus, nous utilisons une boucle pour parcourir chaque pixel de l'image et ajuster la composante RVB de chaque pixel en fonction du niveau de contraste donné.
func main() { img, err := loadImage("input.jpg") if err != nil { fmt.Println("Failed to load image:", err) return } brightImg := adjustBrightness(img, 150) contrastImg := adjustContrast(img, 200) saveImage(brightImg, "bright_output.jpg") saveImage(contrastImg, "contrast_output.jpg") }
Dans le code ci-dessus, nous utilisons d'abord la fonction loadImage pour charger l'image d'entrée, puis appelons respectivement les fonctions ajusterBrightness et ajusterContrast pour ajuster la luminosité et le contraste de l'image. Enfin, nous utilisons la fonction saveImage pour enregistrer l'image ajustée dans un fichier.
Résumé :
Cet article explique comment utiliser Golang pour ajuster la luminosité et le contraste de l'image, et fournit des exemples de code correspondants. En ajustant la luminosité et le contraste, nous pouvons améliorer l'effet visuel de l'image et appliquer davantage de techniques de traitement d'image. En utilisant la bibliothèque de traitement d'images de Golang, nous pouvons facilement implémenter ces tâches et les appliquer dans nos propres projets.
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!