Golang image processing, clipping, base64 data conversion, file storage
This article mainly introduces:
- Reading and writing of picture files.
- How do images convert to and from base64 in the go cache
- 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.