Golang image.Alpha.SubImage function examples

package image

 func (p *Alpha) SubImage(r Rectangle) Image
  

SubImage returns an image representing the portion of the image p visible through r. The returned value shares pixels with the original image.

Golang image.Alpha.SubImage function usage examples

Example 1:

 package main

 import (
 "fmt"
 "image"
 "image/png"
 "os"
 )

 func init() {
 // without this register .. At(), Bounds() functions will
 // caused memory pointer error!!
 image.RegisterFormat("png", "png", png.Decode, png.DecodeConfig)
 }

 func main() {
 imgfile, err := os.Open("./img.png")

 if err != nil {
 fmt.Println("img.png file not found!")
 os.Exit(1)
 }

 defer imgfile.Close()

 img, _, err := image.Decode(imgfile)

 bounds := img.Bounds()

 alpha := image.NewAlpha(bounds)

 rect := image.Rect(0, 0, 100, 100)

 subimg := alpha.SubImage(rect)

 fmt.Println(subimg.Bounds())
 fmt.Println(subimg.At(10, 10))
 }

Example 2:

 func getSubImage(src image.Image, rect image.Rectangle) image.Image {
  if img, ok := src.(*image.NRGBA); ok {
 return img.SubImage(rect)
  }
  if img, ok := src.(*image.NRGBA64); ok {
 return img.SubImage(rect)
  }
  if img, ok := src.(*image.RGBA); ok {
 return img.SubImage(rect)
  }
  if img, ok := src.(*image.RGBA64); ok {
 return img.SubImage(rect)
  }
  if img, ok := src.(*image.Alpha); ok {
 return img.SubImage(rect)
  }
  if img, ok := src.(*image.Alpha16); ok {
 return img.SubImage(rect)
  }
  if img, ok := src.(*image.Gray); ok {
 return img.SubImage(rect)
  }
  if img, ok := src.(*image.Gray16); ok {
 return img.SubImage(rect)
  }
  if img, ok := src.(*image.Paletted); ok {
 return img.SubImage(rect)
  }
  if img, ok := src.(*image.YCbCr); ok {
 return img.SubImage(rect)
  }
  logger.Error("failed to get sub image")
  return src
 }

Reference :

http://golang.org/pkg/image/#Alpha.SubImage

Advertisement