ホームページ >バックエンド開発 >Golang >Go で Base64 でエンコードされた画像を適切にデコードするにはどうすればよいですか?

Go で Base64 でエンコードされた画像を適切にデコードするにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-04 10:14:20185ブラウズ

How to Properly Decode Base64-Encoded Images in Go?

Go Base64 Image Decode

HTML5 キャンバスを使用する場合、base64 でエンコードされた画像データの URL を取得するのが一般的です。これらの文字列には、データ プレフィックスと、base64 でエンコードされた画像データ自体の両方が含まれています。

問題:

一般的に発生する問題の 1 つは、次の場合に「不明な画像形式」エラーが発生することです。を使用してbase64でエンコードされた画像をデコードしようとしていますimage.DecodeConfig().

ソリューション

1.画像形式ハンドラーの登録:

image.DecodeConfig() 関数は、実行前にハンドラーが登録されている画像形式のみを認識します。よく見かける PNG 画像の場合は、image/png パッケージをインポートします。

import _ "image/png"

このパッケージをインポートすると、PNG 形式のハンドラーが登録され、image.DecodeConfig() が PNG 画像を正常にデコードできるようになります。

2.データ接頭辞の削除:

データ URL 内のデータ接頭辞 (例: data:image/png;base64) は、デコード前に削除する必要があります。これをより効率的に行う方法は、入力文字列をスライスすることです。

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

このスライス操作により、データをコピーせずに新しい文字列ヘッダーが作成され、パフォーマンスが向上します。

一度フォーマットすると、ハンドラーが登録され、データ プレフィックスが削除されると、image.DecodeConfig() は PNG 画像を正常にデコードし、その幅と高さの情報を提供できます。

以上がGo で Base64 でエンコードされた画像を適切にデコードするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。