Go Base64 이미지 디코드: "알 수 없는 이미지 형식" 오류 문제 해결
Go에서는 Base64 이미지를 디코딩하여 너비와 너비를 얻을 수 있습니다. 이미지 패키지를 사용하여 높이. 그러나 이 프로세스 중에 "알 수 없는 이미지 형식" 오류가 발생할 수 있습니다.
디코딩 고려 사항:
이미지를 올바르게 디코딩하려면 특정 이미지 형식 핸들러가 다음과 같아야 합니다. 등기. 예를 들어 PNG 이미지를 디코딩하려면 다음을 사용하여 PNG 형식 핸들러를 가져와야 합니다.
import _ "image/png"
또는 형식별 함수 png.DecodeConfig()를 사용할 수 있습니다.
데이터 URI 체계
귀하가 수신하는 base64 이미지 데이터는 일반적으로 데이터 URI 체계의 일부입니다. 구성:
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!