Go Base64 画像データのデコード
問題:
Base64 を受信しています-キャンバスからエンコードされた画像データ URL をデコードして幅と高さを取得しようとしましたが、 「不明な画像形式」エラーが発生しました。
解決策:
提供されたデータ URL 形式は、画像タイプや Base64 などの追加情報を含むデータ URI スキームです。エンコーディング。正しくデコードするには、次の手順に従います。
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)) }
PNG 形式ハンドラー (_ "image/png") を登録することで、image.DecodeConfig() 関数が画像データを適切にデコードできるようになります。画像形式がわかっている場合は、png.DecodeConfig() 関数を直接使用することもできます。
プレフィックス置換の回避:
プレフィックスを空の文字列に置き換える代わりに、 string の場合、入力文字列をスライスして Base64 でエンコードされたデータを抽出します。これは、メモリ内の文字列全体をコピーする必要がないため、より効率的なアプローチです。
base64Data := input[strings.IndexByte(input, ',')+1:]
以上がGo で Base64 でエンコードされた画像データをデコードし、そのサイズを取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。