ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

转换 base64字符串 为图片文件

2022-03-05 20:01:26  阅读:143  来源: 互联网

标签:args 转换 string bs64 tt base64 func 字符串


 

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)
		})
	}
}

  

 

标签:args,转换,string,bs64,tt,base64,func,字符串
来源: https://www.cnblogs.com/rsapaper/p/15969152.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有