Maison > Article > développement back-end > 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.
github.com/nfnt/resize
: pour mettre à l'échelle les images. github.com/nfnt/resize
: 用于缩放图片。github.com/disintegration/imaging
: 用于裁剪图片。可以使用以下命令进行安装:
go get github.com/nfnt/resize go get github.com/disintegration/imaging
图片缩放
图片缩放是指根据所需尺寸,等比例调整图片的大小。下面是一个示例代码,展示如何使用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文件。
图片裁剪
图片裁剪是指根据所需位置和尺寸,裁剪出指定区域的图片。下面是一个示例代码,展示如何使用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进行图片处理是非常简单和高效的。通过使用resize
和imaging
github.com/disintegration/imaging
: utilisé pour recadrer les images. 🎜🎜Vous pouvez utiliser la commande suivante pour installer : 🎜rrreeeresize
pour la mise à l'échelle des images : 🎜rrreee🎜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
. 🎜imaging
pour le recadrage d'images : 🎜rrreee🎜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!