Пытаюсь расшифровать изображение и записать в файл.
Это мой код:
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
оно делает. Под xml_parser.go он возвращает []byte.
@AndrewMorton, возможно, ты прав! Как узнать, что он закодирован в base64?
@ user7903682 Я декодировал "" / 9j / 4AAQSkZJRg == "и получил" ???? JFIF »и« JFIF »раздали его.
вот и все! Благодарность


Данные для изображения, которое вы показываете, имеют кодировку base-64.
Декодирование Base-64 "/ 9j / 4AAQSkZJRg ==" ("==" дополняет его до правильной длины) дает "???? JFIF". Важная подсказка - это «JFIF», который показывает, что данные изображения действительно закодированы в кодировке base-64.
Чтобы получить изображение, вам необходимо декодировать строку base-64, представляющую данные изображения.
Я столкнулся с этой проблемой, потому что использовал ссылку Imgur на изображение страница (например, https://imgur.com/VXM2I36) вместо фактического URL-адреса изображения (например, https://i.imgur.com/VXM2I36.jpg).
Частично проблема заключается в том, что кнопка «Копировать ссылку» на Imgur фактически не дает прямой ссылки на изображение, как отмечено в этот ответ.
Я не знаком с Go, так нужно ли ему декодировать base-64 для изображения в кодировке base-64?