Сохранение изображений в формате Golang из строки Base64 - PullRequest
1 голос
/ 29 мая 2020

Я использую набор подписи Wacom для захвата подписи в JS как строку Base64. Затем я отправляю эту строку Base64 на свой сервер Golang и сохраняю ее в БД. Когда я затем хочу сохранить эту строку Base64 как изображение, я всегда получаю сообщение об ошибке «Плохой png». Все конвертеры могут без проблем открывать строки Base64. Вот моя функция и строка Base64 в качестве примера.

func saveImageTest() 
{
im1 := "" //Link to the string is below
idx := strings.Index(im1, ";base64,")
if idx < 0 {
    fmt.Println("InvalidImage")
}
ImageType := im1[11:idx]
fmt.Println(ImageType)
unbased, err := base64.StdEncoding.DecodeString(im1)
if err != nil {
    log.Println("Cannot decode b64")
}
    r := bytes.NewReader(unbased)

    im, err := png.Decode(r)
    if err != nil {
        log.Println("Bad png")
    }

    f, err := os.OpenFile("example.png", os.O_WRONLY|os.O_CREATE, 0777)
    if err != nil {
        log.Println("Cannot open file")
    }
    png.Encode(f, im)

}

Ссылка на строку Base64 Тестовая подпись

1 Ответ

0 голосов
/ 01 июля 2020

Вы должны начинать DecodeString с idx + 8 (после "; base64,").

...