我正在尝试解码从 javascript 画布的 toDataURL 函数生成的数据 URL。
以下 golang 应用程序失败并出现错误illegal base64 data at input byte 129)
package main
import (
"encoding/base64"
"fmt"
"net/url"
"strings"
)
func main() {
pngData := "iVBORw0KGgoAAAANSUhEUgAAAF0AAAABCAYAAAC8PaJPAAAABHNCSVQICAgIfAhkiAAAALVJREFUGFdt0MsKQVEYhuG9CeU0VgamihBl6hqMXYoLchduQFuKicyFARPn0/J+9Q2tevrba639H1YcQhhHUTTBACloFZHFw3FJbODj7xdxjSqmqGCHms+3vv8m3nDwWSA+vVcipjFHHlcMcUTBtcuueSHqfgzlVJ7Nn/o99s5Qf3v0sUAHK///JbahmZQ3gy4S96OZc9A90fkdepM6tNTHDOqz6T3NofeTluuqV82oHOrphNEPw3UwfBVmbU4AAAAASUVORK5CYII="
pngData, err := url.PathUnescape(pngData)
if err != nil {
fmt.Printf("Failed to unescape", err.Error())
return
}
pngData = strings.Replace(pngData, "+", "", -1)
_, err = base64.URLEncoding.WithPadding(base64.NoPadding).DecodeString(pngData)
if err != nil {
fmt.Printf("Failed to decode", err.Error())
}
}
如果我将 pngData 中的值传递到基于web 的 base64 到 png 转换器中,则生成图像没有问题。(一条白色值的水平线)
我已经尝试过 StdEncoding、RawURLEncoding 和它们的 Raw 对应物。我也尝试过使用或不使用填充,并且我尝试了相同的 pngData 字符串,带有一个额外的 = 并且没有尾随 =。
关于为什么 Golang 拒绝解码这些数据的任何想法?
我从画布中获得的一些图像解码得很好。但有些人,比如这个,没有。
动漫人物
LEATH