ホームページ > バックエンド開発 > Golang > Go で Base64 でエンコードされた画像データをデコードし、そのサイズを取得する方法

Go で Base64 でエンコードされた画像データをデコードし、そのサイズを取得する方法

Barbara Streisand
リリース: 2024-12-06 21:26:16
オリジナル
986 人が閲覧しました

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

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート