Maison  >  Article  >  développement back-end  >  Manipulation d'images Golang : découvrez comment supprimer et restaurer des images

Manipulation d'images Golang : découvrez comment supprimer et restaurer des images

王林
王林original
2023-08-19 10:51:25862parcourir

Manipulation dimages Golang : découvrez comment supprimer et restaurer des images

Manipulation d'images Golang : Apprenez à supprimer et restaurer des images

Introduction :
À l'ère moderne des médias sociaux, les images sont utilisées partout. Cependant, nous pouvons parfois être amenés à effectuer certains traitements sur les images, comme supprimer certains éléments inutiles ou restaurer certaines images modifiées ou endommagées. Cet article vous expliquera comment utiliser Golang pour supprimer et restaurer des images.

  1. Traitement de suppression d'image

Le traitement de suppression d'image fait référence à la suppression de certains éléments de l'image afin qu'ils n'apparaissent plus dans l'image. Cette fonction est très utile dans certains scénarios d'application, tels que la suppression des filigranes des images, la suppression de certains objets des images, etc.

Tout d’abord, nous devons présenter les bibliothèques d’images et de système d’exploitation de Golang, ainsi que la bibliothèque de traitement d’images de Golang golang.org/x/image/draw. La bibliothèque peut être installée en exécutant la commande suivante dans le terminal : go get golang.org/x/image/draw

Voici un exemple de code qui montre comment supprimer un objet d'une image :

package main

import (
    "fmt"
    "image"
    "image/jpeg"
    "image/png"
    "os"
    "golang.org/x/image/draw"
)

func main() {
    // 打开原始图片
    file, err := os.Open("original.png")
    if err != nil {
        fmt.Println(err)
        return
    }
    defer file.Close()
    
    // 读取原始图片
    img, _, err := image.Decode(file)
    if err != nil {
        fmt.Println(err)
        return
    }
    
    // 创建一个与原始图片大小相同的透明画布
    canvas := image.NewRGBA(img.Bounds())
    
    // 将原始图片绘制到画布上
    draw.Draw(canvas, img.Bounds(), img, image.Point{X: 0, Y: 0}, draw.Src)
    
    // 在画布上去除某一个对象(这里以一个矩形框为例)
    rect := image.Rect(xStart, yStart, xEnd, yEnd)
    draw.Draw(canvas, rect, &image.Uniform{color.Transparent}, image.Point{X: 0, Y: 0}, draw.Src)
    
    // 存储处理后的图片
    outFile, err := os.Create("removed.png")
    if err != nil {
        fmt.Println(err)
        return
    }
    defer outFile.Close()
    png.Encode(outFile, canvas)
    fmt.Println("图片去除成功!")
}

Dans ce qui précède le code, nous ouvrons d’abord l’image originale et la lisons dans la variable img. Créez ensuite une toile transparente de la même taille que l’image originale. Dessinez l'image originale sur la toile en appelant la fonction draw.Draw.

Enfin, créez une boîte rectangulaire (rect) en fonction de l'emplacement de l'objet qui doit être supprimé et définissez son contenu sur transparent. Appelez à nouveau la fonction draw.Draw pour dessiner le cadre rectangulaire sur la toile. Enfin, stockez l’image traitée sous Remove.png.

  1. Traitement de restauration d'image

Le traitement de restauration d'image fait référence à la réparation de ces images modifiées ou endommagées pour les restaurer à leur état d'origine. Ceci est très courant dans certains scénarios d’application de récupération ou de réparation d’images.

Ce qui suit est un exemple de code qui montre comment restaurer une image modifiée :

package main

import (
    "fmt"
    "image"
    "image/jpeg"
    "os"
)

func main() {
    // 打开被修改的图片
    file, err := os.Open("modified.jpg")
    if err != nil {
        fmt.Println(err)
        return
    }
    defer file.Close()
    
    // 读取被修改的图片
    img, _, err := image.Decode(file)
    if err != nil {
        fmt.Println(err)
        return
    }
    
    // 存储处理后的图片
    outFile, err := os.Create("restored.jpg")
    if err != nil {
        fmt.Println(err)
        return
    }
    defer outFile.Close()
    jpeg.Encode(outFile, img, &jpeg.Options{Quality: 100})
    
    fmt.Println("图片复原成功!")
}

Dans le code ci-dessus, nous ouvrons d'abord l'image modifiée, la lisons dans la variable img, puis la stockons en tant que fichier restauré.jpg.

Il convient de noter que lorsque l'image est modifiée, certains détails ou informations sur les pixels peuvent être perdus, de sorte que l'image restaurée peut être quelque peu différente de l'image originale.

Conclusion :
Cet article explique comment utiliser Golang pour supprimer et restaurer des images. Grâce à l'exemple de code ci-dessus, nous pouvons apprendre à utiliser la bibliothèque de traitement d'image pour traiter des images dans Golang. J'espère que cet article pourra fournir aux lecteurs une certaine valeur de référence et les aider à mieux traiter les images dans des applications pratiques.

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