1 回答
TA贡献1911条经验 获得超7个赞
标准库提供了功能强大的软件包和解码器,使我们能够非常轻松地做到这一点。imageimage/png
我们知道透明度意味着 alpha=0,我们需要做的就是迭代图像的像素。
package main
import (
"image/png"
"io"
"log"
"net/http"
)
func main() {
transparentResp, _ := http.Get("https://upload.wikimedia.org/wikipedia/commons/3/3d/1_120_transparent.png")
defer transparentResp.Body.Close()
notTransparentResp, _ := http.Get("https://upload.wikimedia.org/wikipedia/commons/thumb/5/58/Pitch.png/640px-Pitch.png")
defer notTransparentResp.Body.Close()
println(isFullyTransparentPng(transparentResp.Body))
println(isFullyTransparentPng(notTransparentResp.Body))
}
func isFullyTransparentPng(reader io.Reader) bool {
img, _ := png.Decode(reader)
for x := img.Bounds().Min.X; x < img.Bounds().Dx(); x++ {
for y := img.Bounds().Min.Y; y < img.Bounds().Dy(); y++ {
_, _, _, alpha := img.At(x, y).RGBA()
if alpha != 0 {
return false
}
}
}
return true
}
- 1 回答
- 0 关注
- 93 浏览
添加回答
举报