ホームページ > バックエンド開発 > Golang > Go で Base64 イメージをデコードすると「不明なイメージ形式」エラーが発生するのはなぜですか?

Go で Base64 イメージをデコードすると「不明なイメージ形式」エラーが発生するのはなぜですか?

Susan Sarandon
リリース: 2024-12-08 20:20:13
オリジナル
444 人が閲覧しました

Why Am I Getting an

Go Base64 イメージのデコード: 「不明なイメージ形式」エラーのトラブルシューティング

Go では、base64 イメージをデコードして、その幅と画像パッケージを使用した高さ。ただし、このプロセス中に「不明な画像形式」エラーが発生する可能性があります。

デコードに関する考慮事項:

画像を正しくデコードするには、特定の画像形式ハンドラーが必要です。登録済み。たとえば、PNG 画像をデコードするには、

import _ "image/png"
ログイン後にコピー

を使用して PNG 形式ハンドラーをインポートする必要があります。または、形式固有の関数 png.DecodeConfig().

データ URI スキーム

受け取る Base64 画像データは通常、データ URI スキーム。次のもので構成されます:

    データ スキーム タイプ: data:
  1. メディア タイプ: image/png
  2. Base64 でエンコードされた画像データ
base64 でエンコードされたデータを分離するには、メディアの後のカンマから文字列をスライスします。 type:

input := "data:image/png;base64,iVkhdfjdAjdfirtn="
b64data := input[strings.IndexByte(input, ',')+1:]
ログイン後にコピー

サンプル コード:

提供された情報を使用して、修正されたコードを次に示します:

package main

import (
    "fmt"
    "image/png"
    "log"
    "os"
    "strings"

    "github.com/nfnt/resize"
)

func main() {
    dataURL := os.Getenv("IMAGE_DATA_URL")

    if dataURL == "" {
        log.Fatal("Missing IMAGE_DATA_URL environment variable")
    }

    // Remove Data URI scheme prefix
    b64data := dataURL[strings.IndexByte(dataURL, ',')+1:]

    // Decode base64 string
    reader := base64.NewDecoder(base64.StdEncoding, strings.NewReader(b64data))

    // Register PNG format handler and decode the image config
    _ = png.RegisterFormat("png", "png", png.PNGConfig{})
    config, _, err := image.DecodeConfig(reader)
    if err != nil {
        log.Fatal(err)
    }

    // Resize the image
    newSize := resize.Thumbnail(0, 0, config.Width, config.Height)
    scaledImage := resize.Resize(uint(newSize.Width), uint(newSize.Height), reader, resize.Lanczos3)

    // Save the resized image
    outFile, err := os.Create("resized-image.png")
    if err != nil {
        log.Fatal(err)
    }

    err = png.Encode(outFile, scaledImage)
    if err != nil {
        log.Fatal(err)
    }

    fmt.Printf("Image saved to: %s", "resized-image.png")
}
ログイン後にコピー
このサンプル コードは次の点に注意してください。また、resize パッケージを使用して画像のサイズを変更しますが、これは画像構成をデコードするだけの場合には必要ありません。

以上がGo で Base64 イメージをデコードすると「不明なイメージ形式」エラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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