Maison  >  Article  >  développement back-end  >  Manipulation d'images Golang : comment régler la luminosité et le contraste

Manipulation d'images Golang : comment régler la luminosité et le contraste

王林
王林original
2023-08-19 16:53:111323parcourir

Manipulation dimages Golang : comment régler la luminosité et le contraste

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.

  1. Importez les packages nécessaires
    Tout d'abord, nous devons importer les packages d'images et de couleurs, qui sont utilisés pour gérer la lecture et la sauvegarde des images, ainsi que la conversion de l'espace colorimétrique.
import (
    "image"
    "image/color"
    _ "image/jpeg"
    _ "image/png"
    "os"
)
  1. Lire le fichier image
    Ensuite, nous devons implémenter une fonction qui lit le fichier image et renvoie l'objet image.Image.
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
}
  1. Ajuster la luminosité
    La luminosité est l'intensité ou le niveau de luminosité des pixels de l'image. En ajustant la composante RVB de chaque pixel, nous pouvons augmenter ou diminuer la luminosité de l'image. Vous trouverez ci-dessous un exemple de fonction permettant de régler la luminosité d'une image.
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é.

  1. Ajuster le contraste
    Le contraste détermine le degré de différence entre les différentes couleurs d'une image. En ajustant la composante RVB de chaque pixel, nous pouvons augmenter ou diminuer le contraste de l'image. Vous trouverez ci-dessous un exemple de fonction permettant de régler le contraste d'une image.
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é.

  1. Exemple
    Enfin, nous pouvons utiliser les fonctions ci-dessus pour régler la luminosité et le contraste de l'image.
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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn