>백엔드 개발 >Golang >Go에서 Base64 이미지를 디코딩할 때 '알 수 없는 이미지 형식' 오류가 발생하는 이유는 무엇입니까?

Go에서 Base64 이미지를 디코딩할 때 '알 수 없는 이미지 형식' 오류가 발생하는 이유는 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-08 20:20:13427검색

Why Am I Getting an

Go Base64 이미지 디코드: "알 수 없는 이미지 형식" 오류 문제 해결

Go에서는 Base64 이미지를 디코딩하여 너비와 너비를 얻을 수 있습니다. 이미지 패키지를 사용하여 높이. 그러나 이 프로세스 중에 "알 수 없는 이미지 형식" 오류가 발생할 수 있습니다.

디코딩 고려 사항:

이미지를 올바르게 디코딩하려면 특정 이미지 형식 핸들러가 다음과 같아야 합니다. 등기. 예를 들어 PNG 이미지를 디코딩하려면 다음을 사용하여 PNG 형식 핸들러를 가져와야 합니다.

import _ "image/png"

또는 형식별 함수 png.DecodeConfig()를 사용할 수 있습니다.

데이터 URI 체계

귀하가 수신하는 base64 이미지 데이터는 일반적으로 데이터 URI 체계의 일부입니다. 구성:

  1. 데이터 구성표 유형: 데이터:
  2. 미디어 유형: 이미지/png
  3. Base64로 인코딩된 이미지 데이터

base64로 인코딩된 데이터를 분리하려면 미디어 뒤의 쉼표에서 문자열을 잘라냅니다. 유형:

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.