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)
}
这样子就好了。
方法用错了不少啊。^_^