package image

import “image”

image实现了基本的2D图片库。

基本接口叫作Image。图片的色彩定义在image/color包。

Image接口可以通过调用如NewRGBA和NewPaletted函数等获得;也可以通过调用Decode函数解码包含GIF、JPEG或PNG格式图像数据的输入流获得。解码任何具体图像类型之前都必须注册对应类型的解码函数。注册过程一般是作为包初始化的副作用,放在包的init函数里。因此,要解码PNG图像,只需在程序的main包里嵌入如下代码:

import _ "image/png"

_表示导入包但不使用包中的变量/函数/类型,只是为了包初始化函数的副作用。

参见http://golang.org/doc/articles/image_package.html

Index

  • Variables

  • type Image
    • func Decode(r io.Reader) (Image, string, error)

  • type PalettedImage

  • type Config
    • func DecodeConfig(r io.Reader) (Config, string, error)

    • func RegisterFormat(name, magic string, decode func(io.Reader) (Image, error), decodeConfig func(io.Reader) (Config, error))

  • type Point
    • func Pt(X, Y int) Point

    • func (p Point) Eq(q Point) bool

    • func (p Point) Add(q Point) Point

    • func (p Point) Sub(q Point) Point

    • func (p Point) Mul(k int) Point

    • func (p Point) Div(k int) Point

    • func (p Point) In(r Rectangle) bool

    • func (p Point) Mod(r Rectangle) Point

    • func (p Point) String() string

  • type Rectangle
    • func Rect(x0, y0, x1, y1 int) Rectangle

    • func (r Rectangle) Canon() Rectangle

    • func (r Rectangle) Dx() int

    • func (r Rectangle) Dy() int

    • func (r Rectangle) Size() Point

    • func (r Rectangle) Empty() bool

    • func (r Rectangle) Eq(s Rectangle) bool

    • func (r Rectangle) In(s Rectangle) bool

    • func (r Rectangle) Overlaps(s Rectangle) bool

    • func (r Rectangle) Add(p Point) Rectangle

    • func (r Rectangle) Sub(p Point) Rectangle

    • func (r Rectangle) Intersect(s Rectangle) Rectangle

    • func (r Rectangle) Union(s Rectangle) Rectangle

    • func (r Rectangle) Inset(n int) Rectangle

    • func (r Rectangle) String() string

  • type Uniform
    • func NewUniform(c color.Color) *Uniform

    • func (c *Uniform) At(x, y int) color.Color

    • func (c *Uniform) Bounds() Rectangle

    • func (c *Uniform) ColorModel() color.Model

    • func (c *Uniform) Convert(color.Color) color.Color

    • func (c *Uniform) Opaque() bool

    • func (c *Uniform) RGBA() (r, g, b, a uint32)

  • type Alpha
    • func NewAlpha(r Rectangle) *Alpha

    • func (p *Alpha) At(x, y int) color.Color

    • func (p *Alpha) Bounds() Rectangle

    • func (p *Alpha) ColorModel() color.Model

    • func (p *Alpha) Opaque() bool

    • func (p *Alpha) PixOffset(x, y int) int

    • func (p *Alpha) Set(x, y int, c color.Color)

    • func (p *Alpha) SetAlpha(x, y int, c color.Alpha)

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

  • type Alpha16
    • func NewAlpha16(r Rectangle) *Alpha16

    • func (p *Alpha16) At(x, y int) color.Color

    • func (p *Alpha16) Bounds() Rectangle

    • func (p *Alpha16) ColorModel() color.Model

    • func (p *Alpha16) Opaque() bool

    • func (p *Alpha16) PixOffset(x, y int) int

    • func (p *Alpha16) Set(x, y int, c color.Color)

    • func (p *Alpha16) SetAlpha16(x, y int, c color.Alpha16)

    • func (p *Alpha16) SubImage(r Rectangle) Image

  • type Gray
    • func NewGray(r Rectangle) *Gray

    • func (p *Gray) At(x, y int) color.Color

    • func (p *Gray) Bounds() Rectangle

    • func (p *Gray) ColorModel() color.Model

    • func (p *Gray) Opaque() bool

    • func (p *Gray) PixOffset(x, y int) int

    • func (p *Gray) Set(x, y int, c color.Color)

    • func (p *Gray) SetGray(x, y int, c color.Gray)

    • func (p *Gray) SubImage(r Rectangle) Image

  • type Gray16
    • func NewGray16(r Rectangle) *Gray16

    • func (p *Gray16) At(x, y int) color.Color

    • func (p *Gray16) Bounds() Rectangle

    • func (p *Gray16) ColorModel() color.Model

    • func (p *Gray16) Opaque() bool

    • func (p *Gray16) PixOffset(x, y int) int

    • func (p *Gray16) Set(x, y int, c color.Color)

    • func (p *Gray16) SetGray16(x, y int, c color.Gray16)

    • func (p *Gray16) SubImage(r Rectangle) Image

  • type RGBA
    • func NewRGBA(r Rectangle) *RGBA

    • func (p *RGBA) At(x, y int) color.Color

    • func (p *RGBA) Bounds() Rectangle

    • func (p *RGBA) ColorModel() color.Model

    • func (p *RGBA) Opaque() bool

    • func (p *RGBA) PixOffset(x, y int) int

    • func (p *RGBA) Set(x, y int, c color.Color)

    • func (p *RGBA) SetRGBA(x, y int, c color.RGBA)

    • func (p *RGBA) SubImage(r Rectangle) Image

  • type RGBA64
    • func NewRGBA64(r Rectangle) *RGBA64

    • func (p *RGBA64) At(x, y int) color.Color

    • func (p *RGBA64) Bounds() Rectangle

    • func (p *RGBA64) ColorModel() color.Model

    • func (p *RGBA64) Opaque() bool

    • func (p *RGBA64) PixOffset(x, y int) int

    • func (p *RGBA64) Set(x, y int, c color.Color)

    • func (p *RGBA64) SetRGBA64(x, y int, c color.RGBA64)

    • func (p *RGBA64) SubImage(r Rectangle) Image

  • type NRGBA
    • func NewNRGBA(r Rectangle) *NRGBA

    • func (p *NRGBA) At(x, y int) color.Color

    • func (p *NRGBA) Bounds() Rectangle

    • func (p *NRGBA) ColorModel() color.Model

    • func (p *NRGBA) Opaque() bool

    • func (p *NRGBA) PixOffset(x, y int) int

    • func (p *NRGBA) Set(x, y int, c color.Color)

    • func (p *NRGBA) SetNRGBA(x, y int, c color.NRGBA)

    • func (p *NRGBA) SubImage(r Rectangle) Image

  • type NRGBA64
    • func NewNRGBA64(r Rectangle) *NRGBA64

    • func (p *NRGBA64) At(x, y int) color.Color

    • func (p *NRGBA64) Bounds() Rectangle

    • func (p *NRGBA64) ColorModel() color.Model

    • func (p *NRGBA64) Opaque() bool

    • func (p *NRGBA64) PixOffset(x, y int) int

    • func (p *NRGBA64) Set(x, y int, c color.Color)

    • func (p *NRGBA64) SetNRGBA64(x, y int, c color.NRGBA64)

    • func (p *NRGBA64) SubImage(r Rectangle) Image

  • type Paletted
    • func NewPaletted(r Rectangle, p color.Palette) *Paletted

    • func (p *Paletted) At(x, y int) color.Color

    • func (p *Paletted) Bounds() Rectangle

    • func (p *Paletted) ColorIndexAt(x, y int) uint8

    • func (p *Paletted) ColorModel() color.Model

    • func (p *Paletted) Opaque() bool

    • func (p *Paletted) PixOffset(x, y int) int

    • func (p *Paletted) Set(x, y int, c color.Color)

    • func (p *Paletted) SetColorIndex(x, y int, index uint8)

    • func (p *Paletted) SubImage(r Rectangle) Image

  • type YCbCrSubsampleRatio
    • func (s YCbCrSubsampleRatio) String() string

  • type YCbCr
    • func NewYCbCr(r Rectangle, subsampleRatio YCbCrSubsampleRatio) *YCbCr

    • func (p *YCbCr) At(x, y int) color.Color

    • func (p *YCbCr) Bounds() Rectangle

    • func (p *YCbCr) COffset(x, y int) int

    • func (p *YCbCr) ColorModel() color.Model

    • func (p *YCbCr) Opaque() bool

    • func (p *YCbCr) SubImage(r Rectangle) Image

    • func (p *YCbCr) YOffset(x, y int) int

  • package

Variables

var (
  // Black是一个完全不透明的面积无限大的黑色图像
  Black = NewUniform(color.Black)
  // White是一个完全不透明的面积无限大的白色图像
  White = NewUniform(color.White)
  // Transparent是一个完全透明的面积无限大的图像
  Transparent = NewUniform(color.Transparent)
  // Opaque是一个完全不透明的面积无限大的图像
  Opaque = NewUniform(color.Opaque)
)
var ErrFormat = errors.New("image: unknown format")

ErrFormat说明解码时遇到了未知的格式。

type Image

type Image interface {
  // ColorModel方法返回图像的色彩模型
  ColorModel() color.Model
  // Bounds方法返回图像的范围,范围不一定包括点(0, 0)
  Bounds() Rectangle
  // At方法返回(x, y)位置的色彩
  // At(Bounds().Min.X, Bounds().Min.Y)返回网格左上角像素的色彩
  // At(Bounds().Max.X-1, Bounds().Max.Y-1) 返回网格右下角像素的色彩
  At(x, y int) color.Color
}

Image接口表示一个采用某色彩模型的颜色构成的有限矩形网格(即一幅图像)。

func Decode

func Decode(r io.Reader) (Image, string, error)

DecodeConfig函数解码并返回一个采用某种已注册格式编码的图像。字符串返回值是该格式注册时的名字。格式一般是在该编码格式的包的init函数中注册的。

type PalettedImage

type PalettedImage interface {
  // ColorIndexAt方法返回(x, y)位置的像素的(调色板)索引
  ColorIndexAt(x, y int) uint8
  Image
}

PalettedImage接口代表一幅图像,它的像素可能来自一个有限的调色板。

如果有对象m满足PalettedImage接口,且m.ColorModel()返回的color.Model接口底层为一个Palette类型值(记为p),则m.At(x, y)返回值应等于p[m.ColorIndexAt(x, y)]。如果m的色彩模型不是Palette,则ColorIndexAt的行为是不确定的。

type Config type Config struct {

ColorModel color.Model Width, Height int

} Config保管图像的色彩模型和尺寸信息。

func DecodeConfig

func DecodeConfig(r io.Reader) (Config, string, error) DecodeConfig函数解码并返回一个采用某种已注册格式编码的图像的色彩模型和尺寸。字符串返回值是该格式注册时的名字。格式一般是在该编码格式的包的init函数中注册的。

func RegisterFormat func RegisterFormat(name, magic string, decode func(io.Reader) (Image, error), decodeConfig func(io.Reader) (Config, error)) RegisterFormat注册一个供Decode函数使用的图片格式。name是格式的名字,如”jpeg”或”png”;magic是该格式编码的魔术前缀,该字符串可以包含”?”通配符,每个通配符匹配一个字节;decode函数用于解码图片;decodeConfig函数只解码图片的配置。

type Point type Point struct {

X, Y int

} Point是X, Y坐标对。坐标轴是向右(X)向下(Y)的。既可以表示点,也可以表示向量。

var ZP Point ZP是原点。

func Pt

func Pt(X, Y int) Point 返回Point{X , Y}

func (Point) Eq

func (p Point) Eq(q Point) bool 报告p和q是否相同。

func (Point) Add

func (p Point) Add(q Point) Point 返回点Point{p.X+q.X, p.Y+q.Y}

func (Point) Sub

func (p Point) Sub(q Point) Point 返回点Point{p.X-q.X, p.Y-q.Y}

func (Point) Mul

func (p Point) Mul(k int) Point 返回点Point{p.X*k, p.Y*k}

func (Point) Div

func (p Point) Div(k int) Point 返回点Point{p.X/k, p.Y/k }

func (Point) In

func (p Point) In(r Rectangle) bool 报告p是否在r范围内。

func (Point) Mod

func (p Point) Mod(r Rectangle) Point 返回r范围内的某点q,满足p.X-q.X是r宽度的倍数,p.Y-q.Y是r高度的倍数。

func (Point) String

func (p Point) String() string 返回p的字符串表示。格式为”(3,4)”

type Rectangle type Rectangle struct {

Min, Max Point

} Rectangle代表一个矩形。该矩形包含所有满足Min.X <= X < Max.X且Min.Y <= Y < Max.Y的点。如果两个字段满足Min.X <= Max.X且Min.Y <= Max.Y,就称该实例为规范格式的。矩形的方法,当输入是规范格式时,总是返回规范格式的输出。

var ZR Rectangle ZR是矩形的零值。

func Rect

func Rect(x0, y0, x1, y1 int) Rectangle 返回一个矩形Rectangle{Pt(x0, y0), Pt(x1, y1)}。

func (Rectangle) Canon

func (r Rectangle) Canon() Rectangle 返回矩形的规范版本(左上&右下),方法必要时会交换坐标的最大值和最小值。

func (Rectangle) Dx

func (r Rectangle) Dx() int 返回r的宽度。

func (Rectangle) Dy

func (r Rectangle) Dy() int 返回r的高度。

func (Rectangle) Size

func (r Rectangle) Size() Point 返回r的宽度w和高度h构成的点Point{w, h}。

func (Rectangle) Empty

func (r Rectangle) Empty() bool 报告矩形是否为空矩形。(即内部不包含点的矩形)

func (Rectangle) Eq

func (r Rectangle) Eq(s Rectangle) bool 报告两个矩形是否相同。

func (Rectangle) In

func (r Rectangle) In(s Rectangle) bool 如果r包含的所有点都在s内,则返回真;否则返回假。

func (Rectangle) Overlaps

func (r Rectangle) Overlaps(s Rectangle) bool 如果r和s有非空的交集,则返回真;否则返回假。

func (Rectangle) Add

func (r Rectangle) Add(p Point) Rectangle 返回矩形按p(作为向量)平移后的新矩形。

func (Rectangle) Sub

func (r Rectangle) Sub(p Point) Rectangle 返回矩形按p(作为向量)反向平移后的新矩形。

func (Rectangle) Intersect

func (r Rectangle) Intersect(s Rectangle) Rectangle 返回两个矩形的交集矩形(同时被r和s包含的最大矩形);如果r和s没有重叠会返回Rectangle零值。

func (Rectangle) Union

func (r Rectangle) Union(s Rectangle) Rectangle 返回同时包含r和s的最小矩形。

func (Rectangle) Inset

func (r Rectangle) Inset(n int) Rectangle 返回去掉矩形四周宽度n的框的矩形,n可为负数。如果n过大将返回靠近r中心位置的空矩形。

func (Rectangle) String

func (r Rectangle) String() string 返回矩形的字符串表示,格式为”(3,4)-(6,5)”。

type Uniform type Uniform struct {

C color.Color

} Uniform类型代表一块面积无限大的具有同一色彩的图像。它实现了color.Color、color.Model和Image等接口。

func NewUniform

func NewUniform(c color.Color) *Uniform func (*Uniform) At

func (c *Uniform) At(x, y int) color.Color func (*Uniform) Bounds

func (c *Uniform) Bounds() Rectangle func (*Uniform) ColorModel

func (c *Uniform) ColorModel() color.Model func (*Uniform) Convert

func (c *Uniform) Convert(color.Color) color.Color func (*Uniform) Opaque

func (c *Uniform) Opaque() bool Opaque方法扫描整个图像并报告该图像是否是完全不透明的。

func (*Uniform) RGBA

func (c *Uniform) RGBA() (r, g, b, a uint32) type Alpha type Alpha struct {

// Pix保管图像的像素,内容为alpha通道值(即透明度)。 // 像素(x, y)起始位置是Pix[(y-Rect.Min.Y)*Stride + (x-Rect.Min.X)*1] Pix []uint8 // Stride是Pix中每行像素占用的字节数 Stride int // Rect是图像的范围 Rect Rectangle

} Alpha类型代表一幅内存中的图像,其At方法返回color.Alpha类型的值。

func NewAlpha

func NewAlpha(r Rectangle) *Alpha NewAlpha函数创建并返回一个具有指定宽度和高度的Alpha。

func (*Alpha) At

func (p *Alpha) At(x, y int) color.Color func (*Alpha) Bounds

func (p *Alpha) Bounds() Rectangle func (*Alpha) ColorModel

func (p *Alpha) ColorModel() color.Model func (*Alpha) Opaque

func (p *Alpha) Opaque() bool Opaque方法扫描整个图像并报告图像是否是完全不透明的。

func (*Alpha) PixOffset

func (p *Alpha) PixOffset(x, y int) int PixOffset方法返回像素(x, y)的数据起始位置在Pix字段的偏移量/索引。

func (*Alpha) Set

func (p *Alpha) Set(x, y int, c color.Color) func (*Alpha) SetAlpha

func (p *Alpha) SetAlpha(x, y int, c color.Alpha) func (*Alpha) SubImage

func (p *Alpha) SubImage(r Rectangle) Image SubImage方法返回代表原图像一部分(r的范围)的新图像。返回值和原图像的像素数据是共用的。

type Alpha16 type Alpha16 struct {

// Pix保管图像的像素,内容为alpha通道值(即透明度,大端在前的格式)。 // 像素(x, y)起始位置是Pix[(y-Rect.Min.Y)*Stride + (x-Rect.Min.X)*2] Pix []uint8 // Stride是Pix中每行像素占用的字节数 Stride int // Rect是图像的范围 Rect Rectangle

} Alpha16类型代表一幅内存中的图像,其At方法返回color.Alpha16类型的值。

func NewAlpha16

func NewAlpha16(r Rectangle) *Alpha16 NewAlpha16函数创建并返回一个具有指定范围的Alpha16。

func (*Alpha16) At

func (p *Alpha16) At(x, y int) color.Color func (*Alpha16) Bounds

func (p *Alpha16) Bounds() Rectangle func (*Alpha16) ColorModel

func (p *Alpha16) ColorModel() color.Model func (*Alpha16) Opaque

func (p *Alpha16) Opaque() bool Opaque方法扫描整个图像并报告图像是否是完全不透明的。

func (*Alpha16) PixOffset

func (p *Alpha16) PixOffset(x, y int) int PixOffset方法返回像素(x, y)的数据起始位置在Pix字段的偏移量/索引。

func (*Alpha16) Set

func (p *Alpha16) Set(x, y int, c color.Color) func (*Alpha16) SetAlpha16

func (p *Alpha16) SetAlpha16(x, y int, c color.Alpha16) func (*Alpha16) SubImage

func (p *Alpha16) SubImage(r Rectangle) Image SubImage方法返回代表原图像一部分(r的范围)的新图像。返回值和原图像的像素数据是共用的。

type Gray type Gray struct {

// Pix保管图像的像素,内容为灰度。 // 像素(x, y)起始位置是Pix[(y-Rect.Min.Y)*Stride + (x-Rect.Min.X)*1] Pix []uint8 // Stride是Pix中每行像素占用的字节数 Stride int // Rect是图像的范围 Rect Rectangle

} Gray类型代表一幅内存中的图像,其At方法返回color.Gray类型的值。

func NewGray

func NewGray(r Rectangle) *Gray NewGray函数创建并返回一个具有指定范围的Gray。

func (*Gray) At

func (p *Gray) At(x, y int) color.Color func (*Gray) Bounds

func (p *Gray) Bounds() Rectangle func (*Gray) ColorModel

func (p *Gray) ColorModel() color.Model func (*Gray) Opaque

func (p *Gray) Opaque() bool Opaque方法扫描整个图像并报告图像是否是完全不透明的。

func (*Gray) PixOffset

func (p *Gray) PixOffset(x, y int) int PixOffset方法返回像素(x, y)的数据起始位置在Pix字段的偏移量/索引。

func (*Gray) Set

func (p *Gray) Set(x, y int, c color.Color) func (*Gray) SetGray

func (p *Gray) SetGray(x, y int, c color.Gray) func (*Gray) SubImage

func (p *Gray) SubImage(r Rectangle) Image SubImage方法返回代表原图像一部分(r的范围)的新图像。返回值和原图像的像素数据是共用的。

type Gray16 type Gray16 struct {

// Pix保管图像的像素,内容为灰度(大端在前的格式)。 // 像素(x, y)起始位置是Pix[(y-Rect.Min.Y)*Stride + (x-Rect.Min.X)*2] Pix []uint8 // Stride是Pix中每行像素占用的字节数 Stride int // Rect是图像的范围 Rect Rectangle

} Gray16类型代表一幅内存中的图像,其At方法返回color.Gray16类型的值。

func NewGray16

func NewGray16(r Rectangle) *Gray16 NewGray16函数创建并返回一个具有指定范围的Gray16。

func (*Gray16) At

func (p *Gray16) At(x, y int) color.Color func (*Gray16) Bounds

func (p *Gray16) Bounds() Rectangle func (*Gray16) ColorModel

func (p *Gray16) ColorModel() color.Model func (*Gray16) Opaque

func (p *Gray16) Opaque() bool Opaque方法扫描整个图像并报告图像是否是完全不透明的。

func (*Gray16) PixOffset

func (p *Gray16) PixOffset(x, y int) int PixOffset方法返回像素(x, y)的数据起始位置在Pix字段的偏移量/索引。

func (*Gray16) Set

func (p *Gray16) Set(x, y int, c color.Color) func (*Gray16) SetGray16

func (p *Gray16) SetGray16(x, y int, c color.Gray16) func (*Gray16) SubImage

func (p *Gray16) SubImage(r Rectangle) Image SubImage方法返回代表原图像一部分(r的范围)的新图像。返回值和原图像的像素数据是共用的。

type RGBA type RGBA struct {

// Pix保管图像的像素色彩信息,顺序为R, G, B, A // 像素(x, y)起始位置是Pix[(y-Rect.Min.Y)*Stride + (x-Rect.Min.X)*4] Pix []uint8 // Stride是Pix中每行像素占用的字节数 Stride int // Rect是图像的范围 Rect Rectangle

} RGBA类型代表一幅内存中的图像,其At方法返回color.RGBA类型的值。

func NewRGBA

func NewRGBA(r Rectangle) *RGBA NewRGBA函数创建并返回一个具有指定范围的RGBA。

func (*RGBA) At

func (p *RGBA) At(x, y int) color.Color func (*RGBA) Bounds

func (p *RGBA) Bounds() Rectangle func (*RGBA) ColorModel

func (p *RGBA) ColorModel() color.Model func (*RGBA) Opaque

func (p *RGBA) Opaque() bool Opaque方法扫描整个图像并报告图像是否是完全不透明的。

func (*RGBA) PixOffset

func (p *RGBA) PixOffset(x, y int) int PixOffset方法返回像素(x, y)的数据起始位置在Pix字段的偏移量/索引。

func (*RGBA) Set

func (p *RGBA) Set(x, y int, c color.Color) func (*RGBA) SetRGBA

func (p *RGBA) SetRGBA(x, y int, c color.RGBA) func (*RGBA) SubImage

func (p *RGBA) SubImage(r Rectangle) Image SubImage方法返回代表原图像一部分(r的范围)的新图像。返回值和原图像的像素数据是共用的。

type RGBA64 type RGBA64 struct {

// Pix保管图像的像素色彩信息,顺序为R, G, B, A(每个值都是大端在前的格式) // 像素(x, y)起始位置是Pix[(y-Rect.Min.Y)*Stride + (x-Rect.Min.X)*8] Pix []uint8 // Stride是Pix中每行像素占用的字节数 Stride int // Rect是图像的范围 Rect Rectangle

} RGBA64类型代表一幅内存中的图像,其At方法返回color.RGBA64类型的值

func NewRGBA64

func NewRGBA64(r Rectangle) *RGBA64 NewRGBA64函数创建并返回一个具有指定范围的RGBA64

func (*RGBA64) At

func (p *RGBA64) At(x, y int) color.Color func (*RGBA64) Bounds

func (p *RGBA64) Bounds() Rectangle func (*RGBA64) ColorModel

func (p *RGBA64) ColorModel() color.Model func (*RGBA64) Opaque

func (p *RGBA64) Opaque() bool Opaque方法扫描整个图像并报告图像是否是完全不透明的。

func (*RGBA64) PixOffset

func (p *RGBA64) PixOffset(x, y int) int PixOffset方法返回像素(x, y)的数据起始位置在Pix字段的偏移量/索引。

func (*RGBA64) Set

func (p *RGBA64) Set(x, y int, c color.Color) func (*RGBA64) SetRGBA64

func (p *RGBA64) SetRGBA64(x, y int, c color.RGBA64) func (*RGBA64) SubImage

func (p *RGBA64) SubImage(r Rectangle) Image SubImage方法返回代表原图像一部分(r的范围)的新图像。返回值和原图像的像素数据是共用的。

type NRGBA type NRGBA struct {

// Pix保管图像的像素色彩信息,顺序为R, G, B, A // 像素(x, y)起始位置是Pix[(y-Rect.Min.Y)*Stride + (x-Rect.Min.X)*4] Pix []uint8 // Stride是Pix中每行像素占用的字节数 Stride int // Rect是图像的范围 Rect Rectangle

} NRGBA类型代表一幅内存中的图像,其At方法返回color.NRGBA类型的值。

func NewNRGBA

func NewNRGBA(r Rectangle) *NRGBA NewNRGBA函数创建并返回一个具有指定范围的NRGBA。

func (*NRGBA) At

func (p *NRGBA) At(x, y int) color.Color func (*NRGBA) Bounds

func (p *NRGBA) Bounds() Rectangle func (*NRGBA) ColorModel

func (p *NRGBA) ColorModel() color.Model func (*NRGBA) Opaque

func (p *NRGBA) Opaque() bool Opaque方法扫描整个图像并报告图像是否是完全不透明的。

func (*NRGBA) PixOffset

func (p *NRGBA) PixOffset(x, y int) int PixOffset方法返回像素(x, y)的数据起始位置在Pix字段的偏移量/索引。

func (*NRGBA) Set

func (p *NRGBA) Set(x, y int, c color.Color) func (*NRGBA) SetNRGBA

func (p *NRGBA) SetNRGBA(x, y int, c color.NRGBA) func (*NRGBA) SubImage

func (p *NRGBA) SubImage(r Rectangle) Image SubImage方法返回代表原图像一部分(r的范围)的新图像。返回值和原图像的像素数据是共用的。

type NRGBA64 type NRGBA64 struct {

// Pix保管图像的像素色彩信息,顺序为R, G, B, A(每个值都是大端在前的格式) // 像素(x, y)起始位置是Pix[(y-Rect.Min.Y)*Stride + (x-Rect.Min.X)*8] Pix []uint8 // Stride是Pix中每行像素占用的字节数 Stride int // Rect是图像的范围 Rect Rectangle

} NRGBA64类型代表一幅内存中的图像,其At方法返回color.NRGBA64类型的值。

func NewNRGBA64

func NewNRGBA64(r Rectangle) *NRGBA64 NewNRGBA64函数创建并返回一个具有指定范围的NRGBA64。

func (*NRGBA64) At

func (p *NRGBA64) At(x, y int) color.Color func (*NRGBA64) Bounds

func (p *NRGBA64) Bounds() Rectangle func (*NRGBA64) ColorModel

func (p *NRGBA64) ColorModel() color.Model func (*NRGBA64) Opaque

func (p *NRGBA64) Opaque() bool Opaque方法扫描整个图像并报告图像是否是完全不透明的。

func (*NRGBA64) PixOffset

func (p *NRGBA64) PixOffset(x, y int) int PixOffset方法返回像素(x, y)的数据起始位置在Pix字段的偏移量/索引。

func (*NRGBA64) Set

func (p *NRGBA64) Set(x, y int, c color.Color) func (*NRGBA64) SetNRGBA64

func (p *NRGBA64) SetNRGBA64(x, y int, c color.NRGBA64) func (*NRGBA64) SubImage

func (p *NRGBA64) SubImage(r Rectangle) Image SubImage方法返回代表原图像一部分(r的范围)的新图像。返回值和原图像的像素数据是共用的。

type Paletted type Paletted struct {

// Pix保存图像的象素,内容为调色板的索引。 // 像素(x, y)的位置是Pix[(y-Rect.Min.Y)*Stride + (x-Rect.Min.X)*1] Pix []uint8 // Stride是Pix中每行像素占用的字节数 Stride int // Rect是图像的范围 Rect Rectangle // Palette是图像的调色板 Palette color.Palette

} Paletted类型是一幅采用uint8类型索引调色板的内存中的图像。

func NewPaletted

func NewPaletted(r Rectangle, p color.Palette) *Paletted NewPaletted函数创建并返回一个具有指定范围、调色板的Paletted。

func (*Paletted) At

func (p *Paletted) At(x, y int) color.Color func (*Paletted) Bounds

func (p *Paletted) Bounds() Rectangle func (*Paletted) ColorIndexAt

func (p *Paletted) ColorIndexAt(x, y int) uint8 func (*Paletted) ColorModel

func (p *Paletted) ColorModel() color.Model func (*Paletted) Opaque

func (p *Paletted) Opaque() bool Opaque方法扫描整个图像并报告图像是否是完全不透明的。

func (*Paletted) PixOffset

func (p *Paletted) PixOffset(x, y int) int PixOffset方法返回像素(x, y)的数据起始位置在Pix字段的偏移量/索引。

func (*Paletted) Set

func (p *Paletted) Set(x, y int, c color.Color) func (*Paletted) SetColorIndex

func (p *Paletted) SetColorIndex(x, y int, index uint8) func (*Paletted) SubImage

func (p *Paletted) SubImage(r Rectangle) Image SubImage方法返回代表原图像一部分(r的范围)的新图像。返回值和原图像的像素数据是共用的。

type YCbCrSubsampleRatio type YCbCrSubsampleRatio int YcbCrSubsampleRatio是YCbCr图像的色度二次采样比率。

const (

YCbCrSubsampleRatio444 YCbCrSubsampleRatio = iota YCbCrSubsampleRatio422 YCbCrSubsampleRatio420 YCbCrSubsampleRatio440

) func (YCbCrSubsampleRatio) String

func (s YCbCrSubsampleRatio) String() string type YCbCr type YCbCr struct {

Y, Cb, Cr []uint8 YStride int CStride int SubsampleRatio YCbCrSubsampleRatio Rect Rectangle

} YcbCr代表采用Y’CbCr色彩模型的一幅内存中的图像。每个像素都对应一个Y采样,但每个Cb/Cr采样对应多个像素。Ystride是两个垂直相邻的像素之间的Y组分的索引增量。CStride是两个映射到单独的色度采样的垂直相邻的像素之间的Cb/Cr组分的索引增量。虽然不作绝对要求,但Ystride字段和len(Y)一般应为8的倍数,并且:

For 4:4:4, CStride == YStride/1 && len(Cb) == len(Cr) == len(Y)/1. For 4:2:2, CStride == YStride/2 && len(Cb) == len(Cr) == len(Y)/2. For 4:2:0, CStride == YStride/2 && len(Cb) == len(Cr) == len(Y)/4. For 4:4:0, CStride == YStride/1 && len(Cb) == len(Cr) == len(Y)/2. func NewYCbCr

func NewYCbCr(r Rectangle, subsampleRatio YCbCrSubsampleRatio) *YCbCr NewYCbCr函数创建并返回一个具有指定宽度、高度和二次采样率的YcbCr。

func (*YCbCr) At

func (p *YCbCr) At(x, y int) color.Color func (*YCbCr) Bounds

func (p *YCbCr) Bounds() Rectangle func (*YCbCr) ColorModel

func (p *YCbCr) ColorModel() color.Model func (*YCbCr) Opaque

func (p *YCbCr) Opaque() bool func (*YCbCr) COffset

func (p *YCbCr) COffset(x, y int) int 像素(X, Y)的Cb或Cr(色度)组分的数据起始位置在Cb/Cr字段的偏移量/索引。

func (*YCbCr) YOffset

func (p *YCbCr) YOffset(x, y int) int 像素(X, Y)的Y(亮度)组分的数据起始位置在Y字段的偏移量/索引。

func (*YCbCr) SubImage

func (p *YCbCr) SubImage(r Rectangle) Image SubImage方法返回代表原图像一部分(r的范围)的新图像。返回值和原图像的像素数据是共用的。