Maison  >  Article  >  développement back-end  >  Comment recadrer et redimensionner des images avec Golang

Comment recadrer et redimensionner des images avec Golang

王林
王林original
2023-08-27 09:19:471230parcourir

Comment recadrer et redimensionner des images avec Golang

Comment recadrer et redimensionner des images à l'aide de Golang

Introduction :
Dans le développement Web moderne, le traitement des images est un besoin courant. Qu'il s'agisse d'afficher des images sur un site Web, de créer des vignettes ou de recadrer des images téléchargées par les utilisateurs, le traitement des images est une tâche importante. Dans cet article, nous expliquerons comment utiliser Golang pour recadrer et redimensionner des images.

  1. Installez les bibliothèques nécessaires
    Avant de commencer, nous devons installer les deux bibliothèques Golang suivantes :
  2. github.com/nfnt/resize : pour mettre à l'échelle les images. github.com/nfnt/resize: 用于缩放图片。
  3. github.com/disintegration/imaging: 用于裁剪图片。

可以使用以下命令进行安装:

go get github.com/nfnt/resize
go get github.com/disintegration/imaging
  1. 图片缩放
    图片缩放是指根据所需尺寸,等比例调整图片的大小。下面是一个示例代码,展示如何使用resize库进行图片缩放:

    package main
    
    import (
     "fmt"
     "image"
     "image/jpeg"
     "log"
     "os"
    
     "github.com/nfnt/resize"
    )
    
    func main() {
     file, err := os.Open("input.jpg")
     if err != nil {
         log.Fatal(err)
     }
     defer file.Close()
    
     // 使用jpeg.Decode函数解码JPEG文件
     img, err := jpeg.Decode(file)
     if err != nil {
         log.Fatal(err)
     }
    
     // 调整图片大小为指定尺寸
     resized := resize.Resize(300, 0, img, resize.Lanczos3)
    
     out, err := os.Create("output.jpg")
     if err != nil {
         log.Fatal(err)
     }
     defer out.Close()
    
     // 使用jpeg.Encode函数将调整大小后的图片保存为JPEG文件
     jpeg.Encode(out, resized, nil)
    
     fmt.Println("图片缩放完成")
    }

在上面的代码中,我们首先打开了一个名为input.jpg的JPEG文件,并使用jpeg.Decode函数解码该图片。然后,我们使用resize.Resize函数调整该图片的大小为300x自动计算的另一个尺寸,使用的是resize.Lanczos3算法进行调整。最后,我们使用jpeg.Encode函数将调整大小后的图片保存为名为output.jpg的JPEG文件。

  1. 图片裁剪
    图片裁剪是指根据所需位置和尺寸,裁剪出指定区域的图片。下面是一个示例代码,展示如何使用imaging库进行图片裁剪:

    package main
    
    import (
     "fmt"
     "image"
     "image/jpeg"
     "log"
     "os"
    
     "github.com/disintegration/imaging"
    )
    
    func main() {
     file, err := os.Open("input.jpg")
     if err != nil {
         log.Fatal(err)
     }
     defer file.Close()
    
     // 使用jpeg.Decode函数解码JPEG文件
     img, err := jpeg.Decode(file)
     if err != nil {
         log.Fatal(err)
     }
    
     // 裁剪图片
     cropped := imaging.Crop(img, image.Rect(100, 100, 400, 300))
    
     out, err := os.Create("output.jpg")
     if err != nil {
         log.Fatal(err)
     }
     defer out.Close()
    
     // 使用jpeg.Encode函数将裁剪后的图片保存为JPEG文件
     jpeg.Encode(out, cropped, nil)
    
     fmt.Println("图片裁剪完成")
    }

在上面的代码中,我们首先打开了一个名为input.jpg的JPEG文件,并使用jpeg.Decode函数解码该图片。然后,我们使用imaging.Crop函数根据给定的起始点和结束点坐标来裁剪该图片。最后,我们使用jpeg.Encode函数将裁剪后的图片保存为名为output.jpg的JPEG文件。

结论:
使用Golang进行图片处理是非常简单和高效的。通过使用resizeimaging

github.com/disintegration/imaging : utilisé pour recadrer les images. 🎜🎜Vous pouvez utiliser la commande suivante pour installer : 🎜rrreee
    🎜🎜Mise à l'échelle de l'image🎜La mise à l'échelle de l'image fait référence à l'ajustement de la taille de l'image proportionnellement en fonction de la taille requise. Voici un exemple de code montrant comment utiliser la bibliothèque resize pour la mise à l'échelle des images : 🎜rrreee🎜
🎜Dans le code ci-dessus, nous ouvrons d'abord un fichier nommé input.jpg fichier JPEG et utilisez la fonction <code>jpeg.Decode pour décoder l'image. Ensuite, nous utilisons la fonction resize.Resize pour redimensionner l'image à 300x une autre taille calculée automatiquement, en utilisant l'algorithme resize.Lanczos3. Enfin, nous utilisons la fonction jpeg.Encode pour enregistrer l'image redimensionnée sous forme de fichier JPEG nommé output.jpg. 🎜
    🎜🎜Recadrage d'image🎜Le recadrage d'image signifie recadrer une image dans une zone spécifiée en fonction de la position et de la taille requises. Vous trouverez ci-dessous un exemple de code qui montre comment utiliser la bibliothèque imaging pour le recadrage d'images : 🎜rrreee🎜
🎜Dans le code ci-dessus, nous ouvrons d'abord un fichier nommé input.jpg JPEG et utilisez la fonction <code>jpeg.Decode pour décoder l'image. Nous utilisons ensuite la fonction imaging.Crop pour recadrer l'image en fonction des coordonnées des points de début et de fin donnés. Enfin, nous utilisons la fonction jpeg.Encode pour enregistrer l'image recadrée sous forme de fichier JPEG nommé output.jpg. 🎜🎜Conclusion :🎜Utiliser Golang pour le traitement d'images est très simple et efficace. En utilisant les bibliothèques resize et imaging, nous pouvons facilement recadrer et redimensionner les images. J'espère que cet article pourra vous inspirer et être utile dans vos 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