Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Menyahkod Data Imej Berkod Base64 dan Mendapatkan Dimensinya dalam Go?

Bagaimana untuk Menyahkod Data Imej Berkod Base64 dan Mendapatkan Dimensinya dalam Go?

Barbara Streisand
Barbara Streisandasal
2024-12-06 21:26:161031semak imbas

How to Decode Base64-Encoded Image Data and Retrieve Its Dimensions in Go?

Menyahkod Data Imej Go Base64

Masalah:

Anda sedang menerima Base64- URL data imej dikodkan daripada kanvas dan cuba menyahkodnya untuk mendapatkan lebar dan ketinggiannya, tetapi anda menghadapi ralat "Format imej tidak diketahui".

Penyelesaian:

Format URL data yang disediakan ialah skema URI Data, yang termasuk maklumat tambahan seperti imej jenis dan pengekodan Base64. Untuk menyahkodnya dengan betul, ikut langkah berikut:

import (
    "encoding/base64"
    "fmt"
    "image"
    _ "image/png" // Register the PNG format handler
    "strings"
)

func decodeBase64Image(dataURL string) (image.Config, error) {
    // Remove the prefix (e.g., "data:image/png;base64,")
    base64Data := dataURL[strings.IndexByte(dataURL, ',')+1:]

    // Decode the Base64-encoded image data
    decoded, err := base64.StdEncoding.DecodeString(base64Data)
    if err != nil {
        return image.Config{}, fmt.Errorf("could not decode Base64 data: %w", err)
    }

    // Decode the image configuration
    return image.DecodeConfig(bytes.NewReader(decoded))
}

Dengan mendaftarkan pengendali format PNG (_ "image/png"), anda mendayakan fungsi imej.DecodeConfig() untuk menyahkod data imej dengan betul. Anda juga boleh menggunakan fungsi png.DecodeConfig() secara langsung jika anda mengetahui format imej.

Mengelakkan Penggantian Awalan:

Daripada menggantikan awalan dengan yang kosong rentetan, potong rentetan input untuk mengekstrak data berkod Base64. Ini adalah pendekatan yang lebih cekap kerana ia tidak memerlukan menyalin keseluruhan rentetan dalam ingatan.

base64Data := input[strings.IndexByte(input, ',')+1:]

Atas ialah kandungan terperinci Bagaimana untuk Menyahkod Data Imej Berkod Base64 dan Mendapatkan Dimensinya 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