Contoh cara memaparkan gambar di Golang

PHPz
Lepaskan: 2023-03-30 09:17:17
asal
1967 orang telah melayarinya

Dengan perkembangan pesat komputer dan Internet, kebanyakan perisian aplikasi memerlukan medium imej untuk melengkapkan fungsi tertentu. Dalam bahasa pengaturcaraan, pelbagai API dan fungsi disediakan untuk memproses imej.

Golang ialah bahasa pengaturcaraan baharu yang direka untuk membangunkan perisian yang cekap, boleh dipercayai dan mudah. Walaupun ia adalah bahasa yang agak baru, ia telah menjadi bahasa pilihan dalam peningkatan bilangan aplikasi. Artikel ini akan memperkenalkan cara memaparkan imej di Golang.

  1. Import perpustakaan berkaitan

Sebelum kami mula memproses imej, kami perlu mengimport perpustakaan berkaitan. Di Golang, kami menggunakan pakej image dan image/png untuk memaparkan imej dalam format png dan menggunakan image/jpeg untuk memaparkan imej dalam format jpeg. Berikut ialah kod untuk mengimport pustaka:

import (
    "fmt"
    "image"
    "image/png"
    "image/jpeg"
    "os"
)
Salin selepas log masuk
  1. Membaca imej

Membaca imej ialah langkah pertama untuk memaparkan imej. Di Golang, kita boleh menggunakan fungsi image.Decode() untuk membaca imej daripada fail. Fungsi ini mengembalikan antara muka image.Image, yang mewakili imej. Berikut ialah kod untuk membaca imej dalam format png:

file, err := os.Open("image.png")
if err != nil {
    panic(err)
}
defer file.Close()

img, err := png.Decode(file)
if err != nil {
    panic(err)
}
Salin selepas log masuk

Jika anda ingin memaparkan imej dalam format jpeg, cuma gantikan png.Decode(file) dengan jpeg.Decode(file).

  1. Buat Tetingkap

Setelah kita mempunyai imej, kita perlu memaparkannya pada skrin. Di Golang, kita boleh mencipta tingkap menggunakan pakej gonum.org/v1/plot/vg. Berikut ialah kod untuk mencipta tetingkap:

import (
    "gonum.org/v1/plot/vg"
)

// 设置窗口大小
width := 600
height := 800

canvas := vg.NewScaledCanvas(vg.Length(width), vg.Length(height))
Salin selepas log masuk

Kita boleh menetapkan saiz tetingkap dengan mengubah suai width dan height.

  1. Lukis imej

Setelah kita mempunyai kanvas, kita boleh menggunakan fungsi DrawImage() untuk melukis imej ke kanvas. Berikut ialah kod untuk melukis imej:

import (
    "gonum.org/v1/plot/vg/draw"
)

// 计算图片的位置
x := vg.Points(0)
y := vg.Points(0)

// 将图片绘制到画布上
draw.CropTop(draw.CropRight(draw.CropBottom(draw.CropLeft(canvas, x), y), vg.Length(img.Bounds().Max.X)), vg.Length(img.Bounds().Max.Y)), img)
Salin selepas log masuk

Untuk melukis imej, kita perlu menentukan kedudukan imej. Dalam contoh ini, kami melukis imej di sudut kiri atas kanvas dan kemudian melukis keseluruhan imej.

  1. Tunjukkan tetingkap

Akhir sekali, kita perlu memaparkan tetingkap kita. Berikut ialah kod untuk memaparkan tetingkap:

import (
    "github.com/go-gl/glfw/v3.2/glfw"
)

// 创建窗口并显示
window := glfw.NewWindow(width, height, "My Window", nil, nil)
window.SetTitle("Display Image Demo")

// 显示画布
window.SetSizeCallback(func(w *glfw.Window, width int, height int) {
    canvas.SetCanvasSize(vg.Length(width), vg.Length(height))
})

window.MakeContextCurrent()
for !window.ShouldClose() {
    window.SwapBuffers()
    glfw.PollEvents()
}
Salin selepas log masuk

Untuk memaparkan tetingkap, kami menggunakan glfw untuk mencipta tetingkap dan melukis kanvas pada tetingkap. Akhir sekali, kami menggunakan window.ShouldClose() untuk menyemak sama ada tetingkap perlu ditutup.

Ringkasan

Di atas adalah keseluruhan proses bagaimana untuk memaparkan imej dalam Golang Dengan beberapa langkah mudah, kita boleh menggunakan Golang untuk memaparkan imej dalam format png atau jpeg. Artikel ini hanyalah demonstrasi mudah, operasi yang lebih kompleks boleh dicapai menggunakan proses ini. Saya berharap melalui artikel ini anda dapat memahami dengan lebih mendalam tentang cara Golang memproses imej.

Atas ialah kandungan terperinci Contoh cara memaparkan gambar di Golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!