Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Mengekstrak Tatasusunan Pixel daripada Imej Go?

Bagaimana untuk Mengekstrak Tatasusunan Pixel daripada Imej Go?

DDD
DDDasal
2024-12-06 18:07:17196semak imbas

How to Extract a Pixel Array from a Go Image?

Cara Mendapatkan Tatasusunan Pixel daripada Imej Go

Dalam Go, anda boleh mendapatkan tatasusunan piksel daripada imej yang dimuatkan daripada fail menggunakan pakej imej. Tatasusunan ini boleh dihantar kepada kaedah texImage2D bagi Contex daripada pakej /mobile/gl.

Untuk mendapatkan tatasusunan piksel, ikuti langkah berikut:

  1. Muatkan imej daripada fail:

    a, err := asset.Open("key.jpeg")
    if err != nil {
     log.Fatal(err)
    }
    defer a.Close()
    
    img, _, err := image.Decode(a)
    if err != nil {
     log.Fatal(err)
    }
  2. Buat tatasusunan dwi-dimensi untuk menyimpan piksel nilai:

    var pixels [][]Pixel
  3. Lelar melalui piksel imej dan ekstrak nilai RGBAnya:

    bounds := img.Bounds()
    width, height := bounds.Max.X, bounds.Max.Y
    for y := 0; y < height; y++ {
     var row []Pixel
     for x := 0; x < width; x++ {
         r, g, b, a := img.At(x, y).RGBA()
         pixel := rgbaToPixel(r, g, b, a)
         row = append(row, pixel)
     }
     pixels = append(pixels, row)
    }
  4. Tukar nilai RGBA kepada piksel:

    func rgbaToPixel(r uint32, g uint32, b uint32, a uint32) Pixel {
     return Pixel{int(r / 257), int(g / 257), int(b / 257), int(a / 257)}
    }
  5. Kembalikan piksel tatasusunan:

    return pixels

Susun atur piksel yang dikembalikan boleh dihantar ke kaedah texImage2D untuk memaparkan imej.

Atas ialah kandungan terperinci Bagaimana untuk Mengekstrak Tatasusunan Pixel daripada Imej 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