package test
import (
"encoding/base64"
"io"
"os"
"regexp"
"strings"
)
// data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAD4AAAAjCAYAAADMibkBAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAO0SURBVGhD7ZjNS1RRGMb7jiDaRYuiaFcQ0aJFmygmWrbwT2gVMYsWQYsWLYJaziJsRk3zozKLamhAlIoQog8SmShBTYjUYgwUQ5RMx3l7nvueo+Nt7nxcZ2Rq5oGXe77n/s577nvOmXVSoaqCV5qq4JWmKnilyT94alGfo89E7u4R+RLVfCqlzzLX6sF7zot0YJiuGs0vmvIylz9w69XZcZH2gyJN60Va9opMj2j5P+D11YFzmTcCOrJFpGGDyECzli8u6LOM5X+pU68uKHj9NpFmDPXyrPkE1tLjCYkFAxKMJUzeKi6hQEBCcZN1yRucAKmktyV/i7Ttg7cBfnMjnhiqFfmZb/A46+cz97OxoWjyAE8kUKPwgWAM6ZXy7/HvPSJhQtOwzMOb8K1juK+dpsFaycvjy4qH3PCJLOBTQ/oNj71QG32uNgYb6RaJnRapM9CED8PrDXhGT2r9ij5mDJZPDZofKFyJWFAC9GABlmlCOI43eCui9C1UcwnXweqNMc1yph1v09LSLGe9u08Ydht27wB2A2/vFC4vj3uUx0POhOBNPPTuMl54s75wZKt6lEYPR7CsnTTqlqBtOq3emtMfdQ0of3NJZOGX+ZFiKDu4O7jF4e0gCvE2WcTTGAOY43lOglnWS0bQTE9jbB9GP/Zv2y0ydMcMXEx5gfuO6mZL+jks0nkG2xahYA48nxbUbabcThKhn54SmezX8YquYoNTduvh1tV3zXjdQNUS0sNq6W2T5iczP6PjcJvzKScym4Dly1xbGt4sh9L33ZEueHCHett6/i9DeQTWuF1k+KHpCBV9/7by8viy3NtZ9qjupY7DADOAGcERzBjJ76Pd3JT2KRk0lSe4WfO6cgoFnxpApEeEJiCXswNK7zPC2zwmhPkmnN/H32q/MgK3yg/cvnjf9TRvE9QsebunLwU+c4rrvar9Sqpc4FrvD9y5dMCiJ/RSQjB7PqfxaspgxoOK43EYT3UPjqBbqS8sOcATMQkiuLmje25w+8fC5Cd4cSdACY7oTi83IdD1h3ExGRMZbMENDfXcvpyJYTtMzsQH7V8yucDNyWyFZdjTcoMnzd364w0cOQFCKMI9Oiryo1frrCYwOdHjOKERnl5H+/dXtK5k/8zk/sYzKTc4lZwT6a4RaUFzerznHPbmaa3j92+NYtvXF7EisCrY/vExPaKWbMkXCq4Hm/zA52dFnsCTbbtEPrebQsgNk57ncbdjP+zQ8gGmjJQf+H+oKnilqQpeaapQcJE/hAXwinS1D/AAAAAASUVORK5CYII=
func chkBs64ImgStr(str string) bool {
r := "^data:image/(png|jpg|jpeg){1};base64,[0-9a-zA-Z+/=]+=$"
b, err := regexp.MatchString(r, str)
if err != nil {
return false
}
return b
}
func base64Img2File(bs64 string) {
if !chkBs64ImgStr(bs64) {
return
}
i := strings.Index(bs64, ",")
dec := base64.NewDecoder(base64.StdEncoding, strings.NewReader(bs64[i+1:]))
fn := func() string {
l := strings.Split(bs64, ";")
ll := strings.Split(l[0], "/")
return ll[1]
}()
bs, err := io.ReadAll(dec)
if err != nil {
panic(err)
}
os.WriteFile("t."+fn, bs, 0777)
}
package test
import (
"testing"
)
func Test_chkBs64ImgStr(t *testing.T) {
type args struct {
str string
}
s1 := "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAD4AAAAjCAYAAADMibkBAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAO0SURBVGhD7ZjNS1RRGMb7jiDaRYuiaFcQ0aJFmygmWrbwT2gVMYsWQYsWLYJaziJsRk3zozKLamhAlIoQog8SmShBTYjUYgwUQ5RMx3l7nvueo+Nt7nxcZ2Rq5oGXe77n/s577nvOmXVSoaqCV5qq4JWmKnilyT94alGfo89E7u4R+RLVfCqlzzLX6sF7zot0YJiuGs0vmvIylz9w69XZcZH2gyJN60Va9opMj2j5P+D11YFzmTcCOrJFpGGDyECzli8u6LOM5X+pU68uKHj9NpFmDPXyrPkE1tLjCYkFAxKMJUzeKi6hQEBCcZN1yRucAKmktyV/i7Ttg7cBfnMjnhiqFfmZb/A46+cz97OxoWjyAE8kUKPwgWAM6ZXy7/HvPSJhQtOwzMOb8K1juK+dpsFaycvjy4qH3PCJLOBTQ/oNj71QG32uNgYb6RaJnRapM9CED8PrDXhGT2r9ij5mDJZPDZofKFyJWFAC9GABlmlCOI43eCui9C1UcwnXweqNMc1yph1v09LSLGe9u08Ydht27wB2A2/vFC4vj3uUx0POhOBNPPTuMl54s75wZKt6lEYPR7CsnTTqlqBtOq3emtMfdQ0of3NJZOGX+ZFiKDu4O7jF4e0gCvE2WcTTGAOY43lOglnWS0bQTE9jbB9GP/Zv2y0ydMcMXEx5gfuO6mZL+jks0nkG2xahYA48nxbUbabcThKhn54SmezX8YquYoNTduvh1tV3zXjdQNUS0sNq6W2T5iczP6PjcJvzKScym4Dly1xbGt4sh9L33ZEueHCHett6/i9DeQTWuF1k+KHpCBV9/7by8viy3NtZ9qjupY7DADOAGcERzBjJ76Pd3JT2KRk0lSe4WfO6cgoFnxpApEeEJiCXswNK7zPC2zwmhPkmnN/H32q/MgK3yg/cvnjf9TRvE9QsebunLwU+c4rrvar9Sqpc4FrvD9y5dMCiJ/RSQjB7PqfxaspgxoOK43EYT3UPjqBbqS8sOcATMQkiuLmje25w+8fC5Cd4cSdACY7oTi83IdD1h3ExGRMZbMENDfXcvpyJYTtMzsQH7V8yucDNyWyFZdjTcoMnzd364w0cOQFCKMI9Oiryo1frrCYwOdHjOKERnl5H+/dXtK5k/8zk/sYzKTc4lZwT6a4RaUFzerznHPbmaa3j92+NYtvXF7EisCrY/vExPaKWbMkXCq4Hm/zA52dFnsCTbbtEPrebQsgNk57ncbdjP+zQ8gGmjJQf+H+oKnilqQpeaapQcJE/hAXwinS1D/AAAAAASUVORK5CYII="
tests := []struct {
name string
args args
want bool
}{
// TODO: Add test cases.
{name: "1", args: args{str: s1}, want: false},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if got := chkBs64ImgStr(tt.args.str); got != tt.want {
t.Errorf("chkBs64ImgStr() = %v, want %v", got, tt.want)
}
})
}
}
func Test_base64Img2File(t *testing.T) {
type args struct {
bs64 string
}
s1 := "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAD4AAAAjCAYAAADMibkBAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAO0SURBVGhD7ZjNS1RRGMb7jiDaRYuiaFcQ0aJFmygmWrbwT2gVMYsWQYsWLYJaziJsRk3zozKLamhAlIoQog8SmShBTYjUYgwUQ5RMx3l7nvueo+Nt7nxcZ2Rq5oGXe77n/s577nvOmXVSoaqCV5qq4JWmKnilyT94alGfo89E7u4R+RLVfCqlzzLX6sF7zot0YJiuGs0vmvIylz9w69XZcZH2gyJN60Va9opMj2j5P+D11YFzmTcCOrJFpGGDyECzli8u6LOM5X+pU68uKHj9NpFmDPXyrPkE1tLjCYkFAxKMJUzeKi6hQEBCcZN1yRucAKmktyV/i7Ttg7cBfnMjnhiqFfmZb/A46+cz97OxoWjyAE8kUKPwgWAM6ZXy7/HvPSJhQtOwzMOb8K1juK+dpsFaycvjy4qH3PCJLOBTQ/oNj71QG32uNgYb6RaJnRapM9CED8PrDXhGT2r9ij5mDJZPDZofKFyJWFAC9GABlmlCOI43eCui9C1UcwnXweqNMc1yph1v09LSLGe9u08Ydht27wB2A2/vFC4vj3uUx0POhOBNPPTuMl54s75wZKt6lEYPR7CsnTTqlqBtOq3emtMfdQ0of3NJZOGX+ZFiKDu4O7jF4e0gCvE2WcTTGAOY43lOglnWS0bQTE9jbB9GP/Zv2y0ydMcMXEx5gfuO6mZL+jks0nkG2xahYA48nxbUbabcThKhn54SmezX8YquYoNTduvh1tV3zXjdQNUS0sNq6W2T5iczP6PjcJvzKScym4Dly1xbGt4sh9L33ZEueHCHett6/i9DeQTWuF1k+KHpCBV9/7by8viy3NtZ9qjupY7DADOAGcERzBjJ76Pd3JT2KRk0lSe4WfO6cgoFnxpApEeEJiCXswNK7zPC2zwmhPkmnN/H32q/MgK3yg/cvnjf9TRvE9QsebunLwU+c4rrvar9Sqpc4FrvD9y5dMCiJ/RSQjB7PqfxaspgxoOK43EYT3UPjqBbqS8sOcATMQkiuLmje25w+8fC5Cd4cSdACY7oTi83IdD1h3ExGRMZbMENDfXcvpyJYTtMzsQH7V8yucDNyWyFZdjTcoMnzd364w0cOQFCKMI9Oiryo1frrCYwOdHjOKERnl5H+/dXtK5k/8zk/sYzKTc4lZwT6a4RaUFzerznHPbmaa3j92+NYtvXF7EisCrY/vExPaKWbMkXCq4Hm/zA52dFnsCTbbtEPrebQsgNk57ncbdjP+zQ8gGmjJQf+H+oKnilqQpeaapQcJE/hAXwinS1D/AAAAAASUVORK5CYII="
tests := []struct {
name string
args args
}{
// TODO: Add test cases.
{name: "1", args: args{bs64: s1}},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
base64Img2File(tt.args.bs64)
})
}
}