Heim  >  Artikel  >  Backend-Entwicklung  >  Golang-Bilddrehung

Golang-Bilddrehung

王林
王林Original
2023-05-19 09:16:36782Durchsuche

Golang ist eine schnell wachsende Programmiersprache, die häufig in großen Webanwendungen und Cloud Computing verwendet wird. Für die Bildverarbeitung bietet Golang eine benutzerfreundliche und effiziente API, die die Bilddrehung sehr einfach macht.

Im Folgenden zeigen wir, wie Sie mit Golang die Bilddrehung implementieren. Angenommen, wir haben ein JPEG-Bild mit dem Namen „image.jpg“, das um 90 Grad gedreht werden muss. Als Nächstes verwenden wir Golang, um diese Aufgabe abzuschließen.

Zuerst müssen wir die mit Golang gelieferten Bibliotheken „image“ und „image/jpeg“ importieren.

import (
    "image"
    "image/jpeg"
)

Als nächstes müssen wir die Bilddatei öffnen und dekodieren.

path := "image.jpg"
file, err := os.Open(path)
if err != nil {
    //处理错误
}
defer file.Close()

img, err := jpeg.Decode(file)
if err != nil {
    //处理错误
}

Jetzt können wir die Rotationsfunktion implementieren, indem wir die Bildmatrix drehen. In Golang kann dieses Ziel durch das „Draw“-Paket erreicht werden. Wir müssen zuerst ein neues Bild erstellen, dann das Originalbild in dieses neue Bild kopieren und es drehen.

newImg := image.NewRGBA(image.Rect(0, 0, img.Bounds().Dy(), img.Bounds().Dx()))

//拷贝原图像到新图像
draw.Draw(newImg, newImg.Bounds(), img, img.Bounds().Min, draw.Src)

//旋转新图像
rotatedImg := imaging.Rotate(newImg, 90, color.Transparent)

Zuletzt müssen wir das gedrehte Bild in einer Datei speichern. Wir speichern das gedrehte Bild als „rotatedImage.jpg“.

outputFile, err := os.Create("rotatedImage.jpg")
if err != nil {
    //处理错误
}
defer outputFile.Close()

//将旋转后的图像保存到文件中
jpeg.Encode(outputFile, rotatedImg, nil)

Vollständiger Beispielcode:

package main

import (
    "image"
    "image/color"
    "image/draw"
    "image/jpeg"
    "os"

    "github.com/disintegration/imaging"
)

func main() {
    path := "image.jpg"
    file, err := os.Open(path)
    if err != nil {
        //处理错误
    }
    defer file.Close()

    img, err := jpeg.Decode(file)
    if err != nil {
        //处理错误
    }

    newImg := image.NewRGBA(image.Rect(0, 0, img.Bounds().Dy(), img.Bounds().Dx()))

    //拷贝原图像到新图像
    draw.Draw(newImg, newImg.Bounds(), img, img.Bounds().Min, draw.Src)

    //旋转新图像
    rotatedImg := imaging.Rotate(newImg, 90, color.Transparent)

    outputFile, err := os.Create("rotatedImage.jpg")
    if err != nil {
        //处理错误
    }
    defer outputFile.Close()

    //将旋转后的图像保存到文件中
    jpeg.Encode(outputFile, rotatedImg, nil)
}

Nachdem wir den obigen Code ausgeführt haben, erhalten wir ein um 90 Grad gedrehtes Bild, das als „rotatedImage.jpg“ gespeichert wird.

Zusammenfassung:

In diesem Artikel haben wir gezeigt, wie man die Bilddrehung mit Golang implementiert. Wir haben die mit Golang gelieferten Bibliotheken „image“ und „image/jpeg“ verwendet und das Paket „draw“ verwendet, um das Bild zu drehen. Anhand dieses einfachen Beispiels können wir die leistungsstarken Fähigkeiten von Golang in der Bildverarbeitung besser verstehen.

Das obige ist der detaillierte Inhalt vonGolang-Bilddrehung. 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