本文整理匯總了Golang中image.Paletted.PixOffset方法的典型用法代碼示例。如果您正苦於以下問題:Golang Paletted.PixOffset方法的具體用法?Golang Paletted.PixOffset怎麽用?Golang Paletted.PixOffset使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類image.Paletted
的用法示例。
在下文中一共展示了Paletted.PixOffset方法的4個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: newSetFuncPaletted
func newSetFuncPaletted(p *image.Paletted) SetFunc {
return func(x, y int, r, g, b, a uint32) {
i := p.PixOffset(x, y)
p.Pix[i] = uint8(p.Palette.Index(color.RGBA64{
R: uint16(r),
G: uint16(g),
B: uint16(b),
A: uint16(a),
}))
}
}
示例2: untile
func untile(m *image.Paletted, data []byte) {
w, h := m.Rect.Dx(), m.Rect.Dy()
for i, x := 0, 0; x < w; x += 8 {
for y := 0; y < h; y += 8 {
for ty := 0; ty < 8; ty++ {
pix := mingle(uint16(data[i]), uint16(data[i+1]))
for tx := 7; tx >= 0; tx-- {
i := m.PixOffset(x+tx, y+ty)
m.Pix[i] = uint8(pix & 3)
pix >>= 2
}
i += 2
}
}
}
}
示例3: encodeImageBlock
func encodeImageBlock(w io.Writer, img *image.Paletted) error {
// start image
litWidth := int(paletteBits(img.Palette))
if litWidth < 2 {
litWidth = 2
}
bounds := img.Bounds()
if err := writeData(w,
byte(0x2C),
uint16(bounds.Min.X), uint16(bounds.Min.Y), uint16(bounds.Dx()), uint16(bounds.Dy()),
byte(0),
byte(litWidth),
); err != nil {
return err
}
// start compression
blocks := &blockWriter{w: w}
compress := lzw.NewWriter(blocks, lzw.LSB, litWidth)
// write each scan line (might not be contiguous)
startX := img.Rect.Min.X
stopX := img.Rect.Max.X
stopY := img.Rect.Max.Y
for y := img.Rect.Min.Y; y < stopY; y++ {
start := img.PixOffset(startX, y)
stop := img.PixOffset(stopX, y)
if _, err := compress.Write(img.Pix[start:stop]); err != nil {
return err
}
}
if err := compress.Close(); err != nil {
return err
}
return blocks.Close()
}
示例4: newAtFuncPaletted
func newAtFuncPaletted(p *image.Paletted) AtFunc {
return func(x, y int) (r, g, b, a uint32) {
i := p.PixOffset(x, y)
return p.Palette[p.Pix[i]].RGBA()
}
}