Skip to content

Instantly share code, notes, and snippets.

@ARolek
Created June 3, 2015 23:34
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ARolek/e887227568e5915fef02 to your computer and use it in GitHub Desktop.
Save ARolek/e887227568e5915fef02 to your computer and use it in GitHub Desktop.
detect if an image has a transparent pixel
package main
import (
"encoding/base64"
"image"
"log"
"strings"
_ "image/jpeg"
_ "image/png"
)
func main() {
file := png // can also be jpg (see bottom of screen)
reader := base64.NewDecoder(base64.StdEncoding, strings.NewReader(file))
m, _, err := image.Decode(reader)
if err != nil {
log.Fatal(err)
}
log.Println(HasTransparency(m))
}
func HasTransparency(img image.Image) bool {
bounds := img.Bounds()
for y := bounds.Min.Y; y < bounds.Max.Y; y++ {
for x := bounds.Min.X; x < bounds.Max.X; x++ {
_, _, _, a := img.At(x, y).RGBA()
if a == 0 {
return true
}
}
}
return false
}
// base64 encoded images for testing
const jpg = `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`
const png = `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`
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment