Golang image processing, clipping, base64 data conversion, file storage

This article mainly introduces:

  1. Reading and writing of picture files.
  2. How do images convert to and from base64 in the go cache
  3. Picture clipping

In this article, all wrong judgments are removed for easy viewing

base64 -> file
ddd, _ := base64.StdEncoding. DecodeString (datasource)//Generate an image file and write the file to the buffer
Err2:=ioutil. WriteFile ("./output. jpg", ddd, 0666)//buffer is output to the jpg file (write to the file directly without processing)
datasource base64 string
base64 -> buffer

ddd, _ := base64.StdEncoding. DecodeString (datasource)//Generate an image file and write the file to the buffer
bbb := bytes. NewBuffer (ddd)//A buffer must be added, or an error will be reported without the read method

After being converted into a buffer, there will be a Reader method. Can be decoded by the image API


Buffer ->ImageBuff

m, _, _ := image. Decode (bbb)//Image file decoding
rgbImg := m.(*image.YCbCr)
SubImg:=rgbImg. SubImage (image. Rect (0, 0, 200, 200)). (* image. YCbCr)//Image clipping x0 y0 x1 y1



Img ->file (code continues above)

f, _ := Os. Create ("test. jpg")//Create a file
Defer f. Close()//Close the file
jpeg. Encode (f, subImg, nil)//Write the file


Img ->base64 (code continues above)
Copy Code

emptyBuff := bytes. NewBuffer (nil)//Create a new empty buffer
jpeg. Encode (emptyBuff, subImg, nil)//img writes to buff
Dist:=make ([] byte, 50000)//Create storage space
base64.StdEncoding. Encode (dist, emptyBuff. Bytes())//convert buff to base64
fmt. Println (string (dist))//Output picture base64 (type=[] byte)
_ = Ioutil. WriteFile ("./base64pic. txt", dist, 0666)//The buffer is output to the jpg file (write to the file directly without processing)

Copy Code


imgFile -> base64

ff, _ := Ioutil. ReadFile ("output2. jpg")//I prefer to use this to read files quickly
Bufstore:=make ([] byte, 5000000)//Data cache
base64.StdEncoding. Encode (bufstore, ff)//Convert the file to base64
_ = Ioutil. WriteFile ("./output2. jpg. txt", dist, 0666)//Write directly to the file and it will be finished.

Leave a Reply

Your email address will not be published. Required fields are marked *

en_USEnglish