Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Boleh Menggabungkan dan Memutar Imej dalam Go?

Bagaimanakah Saya Boleh Menggabungkan dan Memutar Imej dalam Go?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-30 11:07:10976semak imbas

How Can I Combine and Rotate Images in Go?

Manipulasi Imej dengan Putaran Menggunakan Go

Masalah

Pertimbangkan senario berikut:

  • Imej latar belakang (bi )
  • Imej1 (i1)
  • Imej2 (i2)

Matlamatnya adalah untuk meletakkan i1 dan i2 di atas bi pada sudut tertentu dan mencipta imej akhir. Koordinat untuk i1 dan i2 disediakan bersama dengan sudut putaran mereka. i1 dan i2 mungkin bertindih sebahagiannya, tetapi indeks-z menentukan imej yang harus muncul di latar depan.

Tugasnya ialah untuk mencapai fungsi ini dalam Golang.

Penyelesaian

Pakej imej Go menawarkan keupayaan manipulasi imej, seperti yang diterangkan dalam "Lukisan Imej dalam Go" (http://golang.org/doc/articles/image_draw.html).

Untuk menggabungkan imej dengan putaran, pakej tambahan yang dipanggil graphics-go disyorkan. Berikut ialah contoh program Go yang menunjukkan gabungan dua imej dengan putaran:

package main

import (
    "fmt"
    "os"
    "image/draw"
    "image"
    "image/jpeg"
    "code.google.com/p/graphics-go/graphics"
)

func main() {
    fImg1, _ := os.Open("arrow1.jpg")
    defer fImg1.Close()
    img1, _, _ := image.Decode(fImg1)

    fImg2, _ := os.Open("arrow2.jpg")
    defer fImg2.Close()
    img2, _, _ := image.Decode(fImg2)

    m := image.NewRGBA(image.Rect(0, 0, 800, 600))
    draw.Draw(m, m.Bounds(), img1, image.Point{0,0}, draw.Src)
    //draw.Draw(m, m.Bounds(), img2, image.Point{-200,-200}, draw.Src)
    graphics.Rotate(m, img2, &graphics.RotateOptions{3.5})

    toimg, _ := os.Create("new.jpg")
    defer toimg.Close()

    jpeg.Encode(toimg, m, &jpeg.Options{jpeg.DefaultQuality})
}

Dalam contoh ini:

  • Dua imej, "arrow1.jpg" dan "arrow2.jpg ", dimuatkan ke dalam memori.
  • Imej RGBA baharu "m" dicipta dengan output yang diingini dimensi.
  • Imej pertama, "img1," dilukis pada "m" pada asal.
  • Imej kedua, "img2," diputar dan dilukis pada "m" pada sudut tertentu dan mengimbangi.
    Imej gabungan yang terhasil disimpan sebagai "new.jpg."

Ia penting ambil perhatian bahawa pakej graphics-go bergantung pada perpustakaan luaran yang mungkin memerlukan pemasangan dan persediaan. Rujuk dokumentasinya untuk butiran.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggabungkan dan Memutar Imej dalam Go?. 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