Пакет lzw
Обзор
Пакет lzw реализует сжатый формат данных Lempel-Ziv-Welch, описанный в T. A. Welch, “A Technique for High-Performance Data Compression”, Computer, 17(6) (июнь 1984), стр. 8-19.
В частности, он реализует LZW, как используется в форматах файлов GIF и PDF, что означает коды переменной длины до 12 бит и первые два нелитеральных кода — код окончания и код конца файла.
Формат файла 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.
тип 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
) тип 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.
тип 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/