Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Menyahkod Imej Berkod Base64 dengan Betul dalam Go?

Bagaimana untuk Menyahkod Imej Berkod Base64 dengan Betul dalam Go?

Patricia Arquette
Patricia Arquetteasal
2024-12-04 10:14:20197semak imbas

How to Properly Decode Base64-Encoded Images in Go?

Go Base64 Image Decode

Apabila bekerja dengan kanvas HTML5, adalah perkara biasa untuk mendapatkan URL data imej berkod base64. Rentetan ini mengandungi kedua-dua awalan data dan data imej yang dikodkan base64 itu sendiri.

Masalah:

Satu isu yang biasa dihadapi ialah mendapat ralat "Format imej tidak diketahui" apabila cuba menyahkod imej berkod base64 menggunakan image.DecodeConfig().

PENYELESAIAN

1. Daftar Pengendali Format Imej:

Fungsi image.DecodeConfig() hanya mengenali format imej yang pengendalinya didaftarkan sebelum pelaksanaannya. Untuk imej PNG, yang sering ditemui, import pakej imej/png:

import _ "image/png"

Dengan mengimport pakej ini, pengendali format PNG didaftarkan, membenarkan image.DecodeConfig() berjaya menyahkod imej PNG.

2. Alih Keluar Awalan Data:

Awalan data (cth., data:image/png;base64,) dalam URL data hendaklah dialih keluar sebelum penyahkodan. Cara yang lebih cekap untuk melakukan ini ialah dengan menghiris rentetan input:

input := "data:image/png;base64,iVkhdfjdAjdfirtn="
b64data := input[strings.IndexByte(input, ',')+1:]

Operasi penghirisan ini mencipta pengepala rentetan baharu tanpa menyalin data, menghasilkan prestasi yang lebih baik.

Setelah format pengendali didaftarkan dan awalan data dialih keluar, image.DecodeConfig() boleh berjaya menyahkod imej PNG dan memberikan lebar dan ketinggiannya maklumat.

Atas ialah kandungan terperinci Bagaimana untuk Menyahkod Imej Berkod Base64 dengan Betul 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