Пакет png
Обзор
Пакет png реализует декодер и кодировщик изображений PNG.
Спецификация PNG доступна по адресу https://www.w3.org/TR/PNG/.
Указатель
Файлы пакета
paeth.go reader.go writer.go
func Decode
func Decode(r io.Reader) (image.Image, error)
Decode считывает изображение PNG из r и возвращает его как image.Image. Тип возвращаемого изображения зависит от содержимого PNG.
Пример
Код:
// This example uses png.Decode which can only decode PNG images.
// Consider using the general image.Decode as it can sniff and decode any registered image format.
img, err := png.Decode(gopherPNG())
if err != nil {
log.Fatal(err)
}
levels := []string{" ", "░", "▒", "▓", "█"}
for y := img.Bounds().Min.Y; y < img.Bounds().Max.Y; y++ {
for x := img.Bounds().Min.X; x < img.Bounds().Max.X; x++ {
c := color.GrayModel.Convert(img.At(x, y)).(color.Gray)
level := c.Y / 51 // 51 * 5 = 255
if level == 5 {
level--
}
fmt.Print(levels[level])
}
fmt.Print("\n")
}
func DecodeConfig
func DecodeConfig(r io.Reader) (image.Config, error)
DecodeConfig возвращает цветовую модель и размеры изображения PNG, не декодируя изображение целиком.
func Encode
func Encode(w io.Writer, m image.Image) error
Encode записывает изображение m в w в формате PNG. Можно кодировать любое изображение, но изображения, не являющиеся image.NRGBA, могут быть закодированы с потерями.
Обратите внимание, что точные байты, записанные в w, не входят в обещание совместимости Go 1. Вызывающий код, включая тесты, не должен зависеть от точных записанных байтов.
Пример
Код:
const width, height = 256, 256
// Create a colored image of the given width and height.
img := image.NewNRGBA(image.Rect(0, 0, width, height))
for y := 0; y < height; y++ {
for x := 0; x < width; x++ {
img.Set(x, y, color.NRGBA{
R: uint8((x + y) & 255),
G: uint8((x + y) << 1 & 255),
B: uint8((x + y) << 2 & 255),
A: 255,
})
}
}
f, err := os.Create("image.png")
if err != nil {
log.Fatal(err)
}
if err := png.Encode(f, img); err != nil {
f.Close()
log.Fatal(err)
}
if err := f.Close(); err != nil {
log.Fatal(err)
}
type CompressionLevel 1.4
CompressionLevel задаёт уровень сжатия.
type CompressionLevel int
const (
DefaultCompression CompressionLevel = 0
NoCompression CompressionLevel = -1
BestSpeed CompressionLevel = -2
BestCompression CompressionLevel = -3
) type Encoder 1.4
Encoder настраивает кодирование изображений PNG.
type Encoder struct {
CompressionLevel CompressionLevel
// BufferPool optionally specifies a buffer pool to get temporary
// EncoderBuffers when encoding an image.
BufferPool EncoderBufferPool // Go 1.9
}
func (*Encoder) Encode 1.4
func (enc *Encoder) Encode(w io.Writer, m image.Image) error
Encode записывает изображение m в w в формате PNG.
Обратите внимание, что точные байты, записанные в w, не входят в обещание совместимости Go 1. Вызывающий код, включая тесты, не должен зависеть от точных записанных байтов.
type EncoderBuffer 1.9
EncoderBuffer содержит буферы, используемые для кодирования изображений PNG.
type EncoderBuffer encoder
type EncoderBufferPool 1.9
EncoderBufferPool — это интерфейс для получения и возврата временных экземпляров структуры EncoderBuffer. Его можно использовать для повторного использования буферов при кодировании нескольких изображений.
type EncoderBufferPool interface {
Get() *EncoderBuffer
Put(*EncoderBuffer)
} type FormatError
FormatError сообщает, что входные данные не являются допустимым PNG.
type FormatError string
func (FormatError) Error
func (e FormatError) Error() string
type UnsupportedError
UnsupportedError сообщает, что входные данные используют допустимую, но не реализованную возможность PNG.
type UnsupportedError string
func (UnsupportedError) Error
func (e UnsupportedError) Error() string
© Google, Inc.
Licensed under the Creative Commons Attribution License 3.0.
http://golang.org/pkg/image/png/