Heim  >  Artikel  >  Backend-Entwicklung  >  So schneiden Sie Bilder mit Golang zu und ändern ihre Größe

So schneiden Sie Bilder mit Golang zu und ändern ihre Größe

王林
王林Original
2023-08-27 09:19:471170Durchsuche

So schneiden Sie Bilder mit Golang zu und ändern ihre Größe

So beschneiden und skalieren Sie Bilder mit Golang

Einführung:
In der modernen Webentwicklung ist die Verarbeitung von Bildern ein häufiger Bedarf. Ob es darum geht, Bilder auf einer Website anzuzeigen, Miniaturansichten zu erstellen oder von Benutzern hochgeladene Bilder zuzuschneiden, die Bildverarbeitung ist eine wichtige Aufgabe. In diesem Artikel stellen wir vor, wie Sie Golang zum Zuschneiden und Ändern der Größe von Bildern verwenden.

  1. Installieren Sie die erforderlichen Bibliotheken
    Bevor wir beginnen, müssen wir die folgenden zwei Golang-Bibliotheken installieren:
  2. github.com/nfnt/resize: zum Skalieren von Bildern. 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: wird zum Zuschneiden von Bildern verwendet. 🎜🎜Sie können zur Installation den folgenden Befehl verwenden: 🎜rrreee
    🎜🎜Bildskalierung🎜Bildskalierung bezieht sich auf die proportionale Anpassung der Bildgröße an die erforderliche Größe. Hier ist ein Beispielcode, der zeigt, wie die Bibliothek resize für die Bildskalierung verwendet wird: 🎜rrreee🎜
🎜Im obigen Code öffnen wir zunächst eine Datei mit dem Namen input.jpg JPEG-Datei und verwenden Sie die Funktion <code>jpeg.Decode, um das Bild zu dekodieren. Dann verwenden wir die Funktion resize.Resize, um die Größe des Bildes mithilfe des Algorithmus resize.Lanczos3 auf das 300-fache einer anderen automatisch berechneten Größe zu ändern. Schließlich verwenden wir die Funktion jpeg.Encode, um das in der Größe geänderte Bild als JPEG-Datei mit dem Namen output.jpg zu speichern. 🎜
    🎜🎜Bildzuschnitt🎜Bildzuschnitt bedeutet, ein Bild in einem bestimmten Bereich entsprechend der erforderlichen Position und Größe auszuschneiden. Unten finden Sie einen Beispielcode, der zeigt, wie Sie die imaging-Bibliothek zum Zuschneiden von Bildern verwenden: 🎜rrreee🎜
🎜Im obigen Code öffnen wir zunächst eine Datei mit dem Namen input.jpg JPEG-Datei und verwenden Sie die Funktion <code>jpeg.Decode, um das Bild zu dekodieren. Anschließend verwenden wir die Funktion imaging.Crop, um das Bild basierend auf den angegebenen Start- und Endpunktkoordinaten zuzuschneiden. Schließlich verwenden wir die Funktion jpeg.Encode, um das zugeschnittene Bild als JPEG-Datei mit dem Namen output.jpg zu speichern. 🎜🎜Fazit:🎜Golang für die Bildverarbeitung zu verwenden ist sehr einfach und effizient. Mithilfe der Bibliotheken resize und imaging können wir Bilder ganz einfach zuschneiden und in der Größe ändern. Ich hoffe, dass dieser Artikel Sie inspirieren und bei Ihren Projekten nützlich sein kann. 🎜

Das obige ist der detaillierte Inhalt vonSo schneiden Sie Bilder mit Golang zu und ändern ihre Größe. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn