package draw
import "image/draw"
draw包提供了图像合成函数。参见:http://golang.org/doc/articles/image_draw.html
Index
- type Quantizer
- type Image
- type Drawer
- type Op
- func (op Op) Draw(dst Image, r image.Rectangle, src image.Image, sp image.Point)
- func Draw(dst Image, r image.Rectangle, src image.Image, sp image.Point, op Op)
- func DrawMask(dst Image, r image.Rectangle, src image.Image, sp image.Point, mask image.Image, mp image.Point, op Op)
type Quantizer
type Quantizer interface {
// Quantize方法向p中最多增加cap(p)-len(p)个色彩并返回修正后的调色板
// 返回值更适合(可以更少失真的)将m转换为一个调色板类型的图像
Quantize(p color.Palette, m image.Image) color.Palette
}
Quantizer接口为一个图像生成调色板。
type Image
type Image interface {
image.Image
Set(x, y int, c color.Color)
}
Image接口比image.Image接口多了Set方法,该方法用于修改单个像素的色彩。
type Drawer
type Drawer interface {
// 对齐图像dst的r.Min和src的sp点,然后将src绘制到dst上的结果来替换矩形范围内的图像
Draw(dst Image, r image.Rectangle, src image.Image, sp image.Point)
}
Drawer包含Draw方法。
var FloydSteinberg Drawer = floydSteinberg{}
FloydSteinberg是采用Src操作并实现了Floyd-Steinberg误差扩散算法的Drawer。
type Op
type Op int
Op是Porter-Duff合成的操作符。
const (
// 源图像透过遮罩后,覆盖在目标图像上(类似图层)
Over Op = iota
// 源图像透过遮罩后,替换掉目标图像
Src
)
func (Op) Draw
func (op Op) Draw(dst Image, r image.Rectangle, src image.Image, sp image.Point)
Draw方法通过使用Op参数调用包的Draw函数实现了Drawer接口。
func Draw
func Draw(dst Image, r image.Rectangle, src image.Image, sp image.Point, op Op)
Draw函数使用nil的mask参数调用DrawMask函数。
func DrawMask
func DrawMask(dst Image, r image.Rectangle, src image.Image, sp image.Point, mask image.Image, mp image.Point, op Op)
对齐目标图像dst的矩形r左上角、源图像src的sp点、遮罩mask的mp点,根据op修改dst的r矩形区域内的内容,mask如果为nil则视为完全透明。