Golang image operation: How to make the background transparent and diffuse of the picture
Introduction:
In image processing, the background transparency and diffusion of the picture are two a common need. In this article, we will introduce how to use Golang language to perform background transparency and diffusion operations on images, and provide code examples to help readers better understand and practice.
image
and image/draw
to realize the background transparency operation of the image. The following is a sample code that shows how to make the background of a white background transparent:
package main import ( "image" "image/color" "image/draw" "image/png" "os" ) func main() { // 打开图片文件 file, err := os.Open("input.png") if err != nil { panic(err) } defer file.Close() // 解码图片文件 img, _, err := image.Decode(file) if err != nil { panic(err) } // 创建一个RGBA类型的图片,作为背景透明化后的结果图像 bounds := img.Bounds() dst := image.NewRGBA(bounds) // 将原始图片绘制到目标图片上,并设置背景为透明色 draw.Draw(dst, bounds, image.Transparent, image.Point{}, draw.Src) draw.Draw(dst, bounds, img, bounds.Min, draw.Over) // 保存结果图片 outFile, err := os.Create("output.png") if err != nil { panic(err) } defer outFile.Close() // 将结果图片编码为PNG格式并保存到文件 png.Encode(outFile, dst) }
In the above sample code, we first open an image named Image file of input.png
. Then, we decode the image file into an object of type image.Image
through the image.Decode()
function. Next, we create an RGBA type picture object with the same size as the original picture and set the background to a transparent color. Finally, we use the draw.Draw()
function to draw the original image onto the result image with a transparent background, and encode the result image into PNG format and save it to a file.
github.com/disintegration/imaging
package to implement image diffusion operations. Here is a sample code that shows how to implement image diffusion using the github.com/disintegration/imaging
package:
package main import ( "image" "image/png" "os" "github.com/disintegration/imaging" ) func main() { // 打开图片文件 file, err := os.Open("input.png") if err != nil { panic(err) } defer file.Close() // 解码图片文件 img, err := png.Decode(file) if err != nil { panic(err) } // 扩散图片 dst := imaging.BoxBlur(img, 10) // 保存结果图片 outFile, err := os.Create("output.png") if err != nil { panic(err) } defer outFile.Close() // 将结果图片编码为PNG格式并保存到文件 err = png.Encode(outFile, dst) if err != nil { panic(err) } }
In the above sample code, We first opened an image file named input.png
. Then, we decode the image file into an object of type image.Image
through the png.Decode()
function. Next, we used the imaging.BoxBlur()
function to diffuse the image and saved the result to a file named output.png
.
Conclusion:
In this article, we introduced how to use Golang language to perform background transparency and diffusion operations on images, and provided corresponding code examples. Readers can make corresponding modifications and expansions according to their own needs and actual situations to meet different image processing needs. I hope this article is helpful to readers, thank you for reading!
The above is the detailed content of Golang image manipulation: How to make the background of an image transparent and diffuse. For more information, please follow other related articles on the PHP Chinese website!