无效的 JPEG 格式:缺少 SOI 标记



正在尝试解码图像并写入文件。

这是我的代码:

package main
import (
"bytes"
"fmt"
"github.com/reteps/gopowerschool"
"image/jpeg"
)
func main() {
client := gopowerschool.Client("https://example.com")
session, userID, err := client.CreateUserSessionAndStudent("username", "password")
if err != nil {
panic(err)
}   
response, err := client.GetStudentPhoto(&gopowerschool.GetStudentPhoto{UserSessionVO: session, StudentID: userID})
if err != nil {
panic(err)
}   
fmt.Println(string(response.Return_))
image, err := jpeg.Decode(bytes.NewReader(response.Return_))
if err != nil {
panic(err)
}   
fmt.Println(image)
}

图像是:

/9j/4AAQSkZJRg....VNpSP8f6VmE4oopks//Z

当我尝试解码图像的 [] 字节时,它给了我一个错误。

panic: invalid JPEG format: missing SOI marker

您显示的图像的数据似乎是 base-64 编码的。

Base-64 解码 "/9j/4AAQSkZJRg=="("==" 将其填充到正确的长度)给出 "????JFIF"。重要的提示是"JFIF",它表明图像数据确实是base-64编码的。

若要获取图像,需要对表示图像数据的字符串进行 base-64 解码。

我遇到了这个问题,因为我使用的是指向图像页面的Imgur链接(例如 https://i.stack.imgur.com/PAR7j.jpg),而不是图像的实际URL(如 https://i.imgur.com/VXM2I36.jpg)。

部分问题在于Imgur上的"复制链接"按钮实际上并没有提供指向图像的直接链接,如本答案中所述。

最新更新