base64图片转换

ff, _ := ioutil.ReadFile("2.jpg") 
buffstore := make([]byte, 50000000)
dist := make([]byte, 50000000)
base64.StdEncoding.Encode(buffstore, ff)
_ = ioutil.WriteFile("test.jpg.txt", dist, 0667) //文件写成 base64   imgFile -> base64
ddd, _ := base64.StdEncoding.DecodeString("test.jpg.txt")
ioutil.WriteFile("./output.jpg", ddd, 0667)

我这样做图片,base64转换有问题吗?为什么生成的图打不开?

clipboard.png

阅读 14.6k
1 个回答

base64.StdEncoding.Encode(dst []byte,src []byte)

这个的意思是把src压成base64 存储在dst
你这buffstore和dist都是空byte组,然encode到了buffstore,但是写文件你却用了dist,dist根本就没赋值啊。。

ddd, _ := base64.StdEncoding.DecodeString("test.jpg.txt")

你这句话是把test.jpg.txt这个字符串解base64 ,并不是test.jpg.txt文件的内容解base64,所以写进去的当然不是图片了。

package main

import (

"encoding/base64"
"io/ioutil"
"os"

)

func main() {

//读原图片
ff, _ := os.Open("a.png")
defer ff.Close()
sourcebuffer := make([]byte, 500000)
n, _ := ff.Read(sourcebuffer)
//base64压缩
sourcestring := base64.StdEncoding.EncodeToString(sourcebuffer[:n])

//写入临时文件
ioutil.WriteFile("a.png.txt", []byte(sourcestring), 0667)
//读取临时文件
cc, _ := ioutil.ReadFile("a.png.txt")

//解压
dist, _ := base64.StdEncoding.DecodeString(string(cc))
//写入新文件
f, _ := os.OpenFile("b.png", os.O_RDWR|os.O_CREATE, os.ModePerm)
defer f.Close()
f.Write(dist)

}
这样子就好了。
方法用错了不少啊。^_^

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进