Spec-Zone.ru › Go

Пакет lzw

  • import "compress/lzw"
  • Обзор
  • Указатель

Обзор

Пакет lzw реализует формат сжатия данных Лемпеля — Зива — Велча, описанный в статье T. A. Welch, “A Technique for High-Performance Data Compression”, Computer, 17(6) (Июнь 1984), стр. 8-19.

В частности, он реализует алгоритм LZW в том виде, в каком он используется в форматах файлов GIF и PDF, что подразумевает коды переменной длины до 12 бит, при этом первые два нелитеральных кода являются кодом очистки (clear code) и кодом конца файла (EOF code).

Формат файлов TIFF использует похожую, но несовместимую версию алгоритма LZW. Ее реализацию см. в пакете golang.org/x/image/tiff/lzw.

Указатель

  • func NewReader(r io.Reader, order Order, litWidth int) io.ReadCloser
  • func NewWriter(w io.Writer, order Order, litWidth int) io.WriteCloser
  • type Order
  • type Reader
  • func (r *Reader) Close() error
  • func (r *Reader) Read(b []byte) (int, error)
  • func (r *Reader) Reset(src io.Reader, order Order, litWidth int)
  • type Writer
  • func (w *Writer) Close() error
  • func (w *Writer) Reset(dst io.Writer, order Order, litWidth int)
  • func (w *Writer) Write(p []byte) (n int, err error)

Файлы пакета

reader.go writer.go

func NewReader

func NewReader(r io.Reader, order Order, litWidth int) io.ReadCloser

NewReader создает новый io.ReadCloser. Чтение из возвращенного io.ReadCloser считывает и распаковывает данные из r. Если r не реализует также io.ByteReader, распаковщик может прочитать из r больше данных, чем необходимо. Вызывающая сторона обязана вызвать Close для ReadCloser после завершения чтения. Количество бит, используемое для литеральных кодов, litWidth, должно находиться в диапазоне [2,8] и обычно равно 8. Оно должно совпадать со значением litWidth, использованным при сжатии.

Гарантируется, что базовым типом возвращаемого io.ReadCloser является *Reader.

func NewWriter

func NewWriter(w io.Writer, order Order, litWidth int) io.WriteCloser

NewWriter создает новый io.WriteCloser. Данные, записываемые в возвращенный io.WriteCloser, сжимаются и записываются в w. Вызывающая сторона обязана вызвать Close для WriteCloser после завершения записи. Количество бит, используемое для литеральных кодов, litWidth, должно находиться в диапазоне [2,8] и обычно равно 8. Входные байты должны быть меньше 1<<litWidth.

Гарантируется, что базовым типом возвращаемого io.WriteCloser является *Writer.

type Order

Order указывает порядок следования битов в потоке данных LZW.

type Order int
const (
    // LSB means Least Significant Bits first, as used in the GIF file format.
    LSB Order = iota
    // MSB means Most Significant Bits first, as used in the TIFF and PDF
    // file formats.
    MSB
)

type Reader 1.17

Reader представляет собой io.Reader, который можно использовать для чтения сжатых данных в формате LZW.

type Reader struct {
    // contains filtered or unexported fields
}

func (*Reader) Close 1.17

func (r *Reader) Close() error

Close закрывает Reader и возвращает ошибку для любых последующих операций чтения. Он не закрывает базовый io.Reader.

func (*Reader) Read 1.17

func (r *Reader) Read(b []byte) (int, error)

Read реализует io.Reader, считывая распакованные байты из своего базового reader.

func (*Reader) Reset 1.17

func (r *Reader) Reset(src io.Reader, order Order, litWidth int)

Reset очищает состояние Reader и позволяет повторно использовать его как новый Reader.

type Writer 1.17

Writer — это компрессор LZW. Он записывает сжатые данные в базовый writer (см. NewWriter).

type Writer struct {
    // contains filtered or unexported fields
}

func (*Writer) Close 1.17

func (w *Writer) Close() error

Close закрывает Writer, сбрасывая все ожидающие буферизованные выходные данные. Он не закрывает базовый writer для w.

func (*Writer) Reset 1.17

func (w *Writer) Reset(dst io.Writer, order Order, litWidth int)

Reset сбрасывает состояние Writer и позволяет повторно использовать его как новый Writer.

func (*Writer) Write 1.17

func (w *Writer) Write(p []byte) (n int, err error)

Write записывает сжатое представление p в базовый writer для w.

© Google, Inc.
Licensed under the Creative Commons Attribution License 3.0.
http://golang.org/pkg/compress/lzw/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API