Maison > Article > développement back-end > Manipulation d'images Golang : comment refléter, faire pivoter et retourner des images
Manipulation d'images Golang : Comment refléter, faire pivoter et retourner des images
1 Introduction
Le traitement d'image est l'un des besoins que nous rencontrons souvent dans de nombreux scénarios de développement. Dans Golang, nous pouvons utiliser le package image pour exploiter et traiter des images. Cet article se concentrera sur la façon d'utiliser Golang pour refléter, faire pivoter et retourner des images, et fournira des exemples de code correspondants.
2. Opération de mise en miroir
La mise en miroir d'une image consiste à modifier la disposition gauche et droite de l'image. Dans Golang, vous pouvez utiliser la fonction Flip du package draw pour implémenter des opérations de mise en miroir.
Ce qui suit est un exemple de code pour refléter et enregistrer des images.
package main import ( "image" "image/draw" "image/jpeg" "os" ) func main() { // 打开图片文件 file, err := os.Open("input.jpg") if err != nil { panic(err) } defer file.Close() // 解码图片 img, _, err := image.Decode(file) if err != nil { panic(err) } // 创建一个新的画布 flipImg := image.NewRGBA(img.Bounds()) // 镜像操作 draw.Draw(flipImg, flipImg.Bounds(), img, img.Bounds().Min, draw.FlipHorizontal) // 创建输出文件 output, err := os.Create("output_flip.jpg") if err != nil { panic(err) } defer output.Close() // 保存为JPEG格式图片 jpeg.Encode(output, flipImg, nil) }
3. Opération de rotation
Faire pivoter l'image consiste à changer la direction et l'angle de l'image. Dans Golang, vous pouvez utiliser la fonction Rotate du package draw pour implémenter des opérations de rotation.
Ce qui suit est un exemple de code pour faire pivoter l'image de 90 degrés dans le sens des aiguilles d'une montre et l'enregistrer.
package main import ( "image" "image/draw" "image/jpeg" "os" ) func main() { // 打开图片文件 file, err := os.Open("input.jpg") if err != nil { panic(err) } defer file.Close() // 解码图片 img, _, err := image.Decode(file) if err != nil { panic(err) } // 创建一个新的画布,大小为旋转后的尺寸 rotateImg := image.NewRGBA(image.Rect(0, 0, img.Bounds().Dy(), img.Bounds().Dx())) // 旋转操作 draw.Draw(rotateImg, rotateImg.Bounds(), img, img.Bounds().Min, draw.Rotate90) // 创建输出文件 output, err := os.Create("output_rotate.jpg") if err != nil { panic(err) } defer output.Close() // 保存为JPEG格式图片 jpeg.Encode(output, rotateImg, nil) }
4. Opération Flip
Retournez l'image pour modifier la disposition supérieure et inférieure de l'image. Dans Golang, vous pouvez utiliser la fonction Flip du package draw pour implémenter l'opération flip.
Ce qui suit est un exemple de code pour retourner l'image et l'enregistrer.
package main import ( "image" "image/draw" "image/jpeg" "os" ) func main() { // 打开图片文件 file, err := os.Open("input.jpg") if err != nil { panic(err) } defer file.Close() // 解码图片 img, _, err := image.Decode(file) if err != nil { panic(err) } // 创建一个新的画布 flipImg := image.NewRGBA(img.Bounds()) // 翻转操作 draw.Draw(flipImg, flipImg.Bounds(), img, img.Bounds().Min, draw.FlipVertical) // 创建输出文件 output, err := os.Create("output_flip.jpg") if err != nil { panic(err) } defer output.Close() // 保存为JPEG格式图片 jpeg.Encode(output, flipImg, nil) }
Dans l'exemple de code ci-dessus, nous utilisons les fonctions associées du package image pour faire fonctionner les images. Parmi eux, la fonction image.Decode est utilisée pour décoder le fichier image et créer un objet image. Avant d'opérer, nous créons d'abord un nouvel objet canevas (c'est-à-dire créons un nouvel objet image), puis utilisons les fonctions du package draw pour effectuer des opérations telles que la mise en miroir, la rotation et le retournement. Enfin, utilisez la fonction Encode du package jpeg pour enregistrer l'image traitée au format JPEG.
5. Résumé
Grâce à l'introduction et aux exemples de code de cet article, nous avons appris à utiliser Golang pour refléter, faire pivoter et retourner des images. En développement réel, nous pouvons effectuer les opérations de traitement d'image correspondantes en fonction de besoins spécifiques pour répondre aux besoins du projet. Dans le même temps, nous pouvons également combiner avec d'autres bibliothèques de traitement d'image, telles que le redimensionnement, le recadrage, etc., pour effectuer des opérations d'image plus complexes.
J'espère que cet article pourra être utile à tout le monde dans le traitement d'images Golang !
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!