Rumah  >  Artikel  >  pembangunan bahagian belakang  >  putaran gambar golang

putaran gambar golang

王林
王林asal
2023-05-19 09:16:36783semak imbas

Golang ialah bahasa pengaturcaraan yang berkembang pesat yang biasa digunakan dalam aplikasi web berskala besar dan pengkomputeran awan. Dari segi pemprosesan imej, Golang menyediakan API yang mudah digunakan dan cekap, yang menjadikan putaran imej sangat mudah.

Di bawah, kami akan menunjukkan cara menggunakan Golang untuk melaksanakan putaran imej. Katakan kita mempunyai imej JPEG bernama "image.jpg" yang perlu diputar 90 darjah Seterusnya kita akan menggunakan Golang untuk menyelesaikan tugasan ini.

Pertama, kita perlu mengimport perpustakaan "imej" dan "imej/jpeg" yang disertakan dengan Golang.

import (
    "image"
    "image/jpeg"
)

Seterusnya, kita perlu membuka dan menyahkod fail imej.

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

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

Kini, kita boleh melaksanakan fungsi putaran dengan memutar matriks imej. Di Golang, matlamat ini boleh dicapai melalui pakej "draw". Kita perlu mencipta imej baharu dahulu, kemudian salin imej asal ke imej baharu ini dan putarkannya.

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)

Akhir sekali, kita perlu menyimpan imej yang diputar ke fail. Kami menyimpan imej yang diputar sebagai "rotatedImage.jpg".

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

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

Kod sampel penuh:

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)
}

Selepas menjalankan kod di atas, kita akan mendapat imej diputar 90 darjah, disimpan sebagai "rotatedImage.jpg".

Ringkasan:

Dalam artikel ini, kami menunjukkan cara melaksanakan putaran imej menggunakan Golang. Kami menggunakan perpustakaan "imej" dan "imej/jpeg" yang disertakan dengan Golang dan menggunakan pakej "lukisan" untuk memutarkan imej. Melalui contoh mudah ini, kita boleh lebih memahami keupayaan hebat Golang dalam pemprosesan imej.

Atas ialah kandungan terperinci putaran gambar golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn