Пакет 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.
Указатель
Файлы пакета
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/