Golang : Set image canvas or background to transparent
Putting this down here for my own future reference. Maybe useful to you too. Anyway, basically what I need is to make an image canvas or background to transparent before drawing over it.
For example, I need to set the foreground color to black and set the background to transparent :
foreGroundColor := image.NewUniform(black)
backGroundColor := image.Transparent
backgroundWidth := 700
backgroundHeight := 50
background = image.NewRGBA(image.Rect(0, 0, backgroundWidth, backgroundHeight))
draw.Draw(background, background.Bounds(), backGroundColor, image.ZP, draw.Src)
// draw something with foreGroundColor.....
alternatively, this method will work as well.
// make every pixel transparent
for y := 0; y < backgroundHeight; y++ {
for x := 0; x < backgroundWidth; x++ {
background.Set(x, y, image.Transparent)
}
}
To test, save the background to a PNG file.
// Save that background image to PNG.
imgFile, err := os.Create("background.png")
if err != nil {
fmt.Println(err)
os.Exit(-1)
}
defer imgFile.Close()
buff := bufio.NewWriter(imgFile)
err = png.Encode(buff, background)
if err != nil {
fmt.Println(err)
os.Exit(-1)
}
err = buff.Flush()
if err != nil {
fmt.Println(err)
os.Exit(-1)
}
fmt.Println("Save to background.png")
Remember...... that JPEG does not support transparency.
Happy coding!
References:
https://www.socketloop.com/references/golang-image-alpha-set-and-setalpha-functions-examples
By Adam Ng
IF you gain some knowledge or the information here solved your programming problem. Please consider donating to the less fortunate or some charities that you like. Apart from donation, planting trees, volunteering or reducing your carbon footprint will be great too.
Advertisement
Tutorials
+16.8k Golang : How to save log messages to file?
+8k Golang : Metaprogramming example of wrapping a function
+12k Golang : How to check if a string starts or ends with certain characters or words?
+9.4k Golang : Copy map(hash table) example
+8.8k Golang : Go as a script or running go with shebang/hashbang style
+10.1k Fix ERROR 1045 (28000): Access denied for user 'root'@'ip-address' (using password: YES)
+9.2k Golang : Scramble and unscramble text message by randomly replacing words
+6.3k Unix/Linux : How to get own IP address ?
+5.1k Golang : Generate Interleaved 2 inch by 5 inch barcode
+6.3k Golang : Map within a map example
+19.8k Golang : Reset or rewind io.Reader or io.Writer
+11.4k Get form post value in Go