## Tcl9.0.3/Tk9.0.3 Documentation > Tcl Commands > zlib

### Tcl/Tk Applications | Tcl Commands | Tk Commands | [incr Tcl] Package Commands | SQLite3 Package Commands | TDBC Package Commands | tdbc::mysql Package Commands | tdbc::odbc Package Commands | tdbc::postgres Package Commands | tdbc::sqlite3 Package Commands | Thread Package Commands | Tcl C API | Tk C API | [incr Tcl] Package C API | TDBC Package C API

  NAME
    zlib — 圧縮と解凍操作 Compression and decompression operations
  構文 SYNOPSIS
  説明 DESCRIPTION
  圧縮副命令 COMPRESSION SUBCOMMANDS
    zlib compress string ?level?
    zlib decompress string ?bufferSize?
    zlib deflate string ?level?
    zlib gunzip string ?-headerVar varName?
      comment
      crc
      filename
      os
      size
      time
      type
    zlib gzip string ?-level level? ?-header dict?
      comment
      crc
      filename
      os
      time
      type
    zlib inflate string ?bufferSize?
  CHANNEL SUBCOMMAND
    zlib push mode channel ?options ...?
      compress
      decompress
      deflate
      gunzip
      gzip
      inflate
      -dictionary binData
      -header dictionary
      -level compressionLevel
      -limit readaheadLimit
      -checksum checksum
      -dictionary binData
      -flush type
      -header dictionary
      -limit readaheadLimit
  データ羅列の副命令　 STREAMING SUBCOMMAND
    zlib stream mode ?options?
      zlib stream compress ?-dictionary bindata? ?-level level?
      zlib stream decompress ?-dictionary bindata?
      zlib stream deflate ?-dictionary bindata? ?-level level?
      zlib stream gunzip
      zlib stream gzip ?-header header? ?-level level?
      zlib stream inflate ?-dictionary bindata?
  検査和副命令 CHECKSUMMING SUBCOMMANDS
    zlib adler32 string ?initValue?
    zlib crc32 string ?initValue?
  STREAMING INSTANCE COMMAND
    stream add ?option...? data
    stream checksum
    stream close
    stream eof
    stream finalize
    stream flush
    stream fullflush
    stream get ?count?
    stream header
    stream put ?option...? data
      -dictionary binData
      -finalize
      -flush
      -fullflush
    stream reset
  用例 EXAMPLES
  SEE ALSO
  KEYWORDS

### NAME

zlib — 圧縮と解凍操作 Compression and decompression operations

### 構文 SYNOPSIS

zlib subcommand arg ...

### 説明 DESCRIPTION

zlib 命令は Jean-loup Gailly 氏と Mark Adler 氏による Zlib 外部函数の圧縮と正当性確認の機能の利用を提供する｡次の副命令がある｡ The zlib command provides access to the compression and check-summing facilities of the Zlib library by Jean-loup Gailly and Mark Adler. It has the following subcommands.

#### 圧縮副命令 COMPRESSION SUBCOMMANDS

zlib compress string ?level?
  string 内の二進文字列をzlib-形式の二進圧縮形式のデータにして返す｡もし level が指定されていると､使用する圧縮水準を与える(無圧縮の 0 から､最高圧縮の9 迄)｡ Returns the zlib-format compressed binary data of the binary string in string. If present, level gives the compression level to use (from 0, which is uncompressed, to 9, maximally compressed).

zlib decompress string ?bufferSize?
  string 内の生の圧縮二進文字列を無圧縮の二進データにして返す｡もし､ bufferSize が指定されているとデータの受取りに使われる緩衝域の容量を示唆する｡ Returns the uncompressed version of the raw compressed binary data in string. If present, bufferSize is a hint as to what size of buffer is to be used to receive the data.

zlib deflate string ?level?
  string 内の二進文字列を生の形式の二進データに圧縮して返す｡もし level が指定されていると､使用する圧縮水準を定める(無圧縮の 0 から､最高圧縮の9 迄)｡ Returns the raw compressed binary data of the binary string in string. If present, level gives the compression level to use (from 0, which is uncompressed, to 9, maximally compressed).

zlib gunzip string ?-headerVar varName?
  二進文字列 string の非圧縮の内容を返す､それは gzip 形式だったものでなければならない｡もし､ -headerVar が与えられると､ varName と呼ばれる変数内に gzip 式の冒頭部の内容を記述した辞書を保存する｡辞書の鍵として存在し得るものは次の通り: Return the uncompressed contents of binary string string, which must have been in gzip format. If -headerVar is given, store a dictionary describing the contents of the gzip header in the variable called varName. The keys of the dictionary that may be present are:

  comment
    存在する場合には､冒頭部の注釈欄｡ The comment field from the header, if present.

  crc
    冒頭部の CRC を算出するか否かの論理値｡ A boolean value describing whether a CRC of the header is computed.

  filename
    存在する場合には､冒頭部のファイル名欄｡ The filename field from the header, if present.

  os
    冒頭部のOSの型による符号欄(もし “未知” 値でない場合)｡この符号の意味については RFC 1952 を参照されたい｡(訳註 文書の改行仕様の判断に使う;QW->"") The operating system type code field from the header (if not the QW unknown value). See RFC 1952 for the meaning of these codes.

  size
    非圧縮データの寸法｡ The size of the uncompressed data.

  time
    もし非零の場合､冒頭部の日付欄､ファイル名欄が修正されたと推定される時期を表す｡ clock format の仕様に適す｡ The time field from the header if non-zero, expected to be time that the file named by the filename field was modified. Suitable for use with clock format.

  type
    既知の場合は非圧縮データの型(二進か文書か)｡ The type of the uncompressed data (binary or text) if known.

zlib gzip string ?-level level? ?-header dict?
  二進列 string の内容を圧縮し gzip 形式で返す｡もし -level が与えられると level は適用する圧縮水準を与える(無圧縮の 0 から､最高圧縮の9 迄)｡もし､ -header が与えられると､ dict は gzip の冒頭部の為に使用される値を含む辞書である｡次の鍵が定義され得る: Return the compressed contents of binary string string in gzip format. If -level is given, level gives the compression level to use (from 0, which is uncompressed, to 9, maximally compressed). If -header is given, dict is a dictionary containing values used for the gzip header. The following keys may be defined:

  comment
    与えられた注釈を gzip-形式のデータの冒頭に追加する｡ Add the given comment to the header of the gzip-format data.

  crc
    冒頭部の CRC を算出するか否かを指定する論理値｡註意すべきは､もしデータが gzip 算譜により置換えられる場合､冒頭の CRC は計算すべきではない｡ A boolean saying whether to compute a CRC of the header. Note that if the data is to be interchanged with the gzip program, a header CRC should not be computed.

  filename
    圧縮されたデータの由来となったファイル名｡ The name of the file that the data to be compressed came from.

  os
    OSの型であって､ RFC 1952 に記述された値の一つを有する｡(訳註 文書ファイルの行末符号の推測に使う) The operating system type code, which should be one of the values described in RFC 1952.

  time
    filename 鍵内の名前の付けられたファイルが最後に修正された時刻｡ clock seconds 又は file mtime の返り値と同じになる｡ The time that the file named in the filename key was last modified. This will be in the same as is returned by clock seconds or file mtime.

  type
    圧縮されているデータの型､ binary か text ｡ The type of the data being compressed, being binary or text.

zlib inflate string ?bufferSize?
  string 内の生の圧縮二進文字列を無圧縮の二進データにして返す｡もし､ bufferSize が指定されているとデータの受取りに使われる緩衝域の容量を示唆する｡ Returns the uncompressed version of the raw compressed binary data in string. If present, bufferSize is a hint as to what size of buffer is to be used to receive the data.

#### CHANNEL SUBCOMMAND

zlib push mode channel ?options ...?
  通信路 channel に圧縮又は非圧縮変換を押し込む｡変換は chan pop により再除去することができる｡ mode 引数はどの様に型の変換なされたかを定める; 次のものに対応している: Pushes a compressing or decompressing transformation onto the channel channel. The transformation can be removed again with chan pop. The mode argument determines what type of transformation is pushed; the following are supported:

  compress
    変換は圧縮変換であり､ 通信路上に zlib-形式のデータを生成する､通信路は書込み可能でなければならない｡ The transformation will be a compressing transformation that produces zlib-format data on channel, which must be writable.

  decompress
    変換は解凍変換であり､ 通信路 から zlib-形式のデータを読み出す､通信路は読出し可能でなければならない｡ The transformation will be a decompressing transformation that reads zlib-format data from channel, which must be readable.

  deflate
    変換は圧縮変換であり､ 通信路上に生の圧縮データを生成する､通信路は書込み可能でなければならない｡ The transformation will be a compressing transformation that produces raw compressed data on channel, which must be writable.

  gunzip
    変換は解凍変換であり､ 通信路から gzip-形式のデータを読み出す､通信路は読出し可能でなければならない｡ The transformation will be a decompressing transformation that reads gzip-format data from channel, which must be readable.

  gzip
    変換は圧縮変換であり､ 通信路 上に gzip-形式のデータを生成する｡通信路は書込み可能でなければならない｡ The transformation will be a compressing transformation that produces gzip-format data on channel, which must be writable.

  inflate
    変換は解凍変換であり､ 通信路 から生の圧縮データを読み出す､通信路は読出し可能でなければならない｡ The transformation will be a decompressing transformation that reads raw compressed data from channel, which must be readable.

    “指示項目 ...” 経由で zlib push 命令に変換が生成される時に次の指示項目が設定され得る: The following options may be set when creating a transformation via the “options ...” to the zlib push command:

    -dictionary binData
      データを二進情報 に圧縮又は解凍する時に使う為の圧縮辞書を設定する｡ gzip-形式のデータを伴って働く翻訳には適切でない｡辞書は文字列(バイト列)で構成すべきであり､後に圧縮されるデータと遭遇し勝ちであり､最も普通に使用される文字列が辞書の末尾に好んで置かれる｡Tcl は特定のデータ並びの為のこの様な辞書を選択する為の道具を有さない｡ Sets the compression dictionary to use when working with compressing or decompressing the data to be binData. Not valid for transformations that work with gzip-format data. The dictionary should consist of strings (byte sequences) that are likely to be encountered later in the data to be compressed, with the most commonly used strings preferably put towards the end of the dictionary. Tcl provides no mechanism for choosing a good such dictionary for a particular data sequence.

    -header dictionary
      Passes a description of the gzip header to create, in the same format that zlib gzip understands.

    -level compressionLevel
      圧縮の程度｡ 0 (非圧縮)から 9 (最高圧縮)迄の整数でなければならない｡ How hard to compress the data. Must be an integer from 0 (uncompressed) to 9 (maximally compressed).

    -limit readaheadLimit
      解凍する時に､先に読むバイトの最大値｡ The maximum number of bytes ahead to read when decompressing.

      この指示項目は的外れになっている｡元々､多重流路の通信路内で､圧縮されたデータ羅列の末尾を越える読込みから Tcl を阻止し､速度対対価から､更なる読込みの為の後のデータを残すことを確実にする為に導入された｡ This option has become irrelevant. It was originally introduced to prevent Tcl from reading beyond the end of a compressed stream in multi-stream channels to ensure that the data after was left alone for further reading, at the cost of speed.

      Tcl は今や圧縮されたデータ羅列の末尾を越えて読んだどのようなバイトも通信路に自動的に返し､更なる読込譜に未読として看做されるようにする｡ Tcl now automatically returns any bytes it has read beyond the end of a compressed stream back to the channel, making them appear as unread to further readers.

    圧縮と解凍の通信路翻訳は両方共 chan configure 命令から利用できる余分の構成設定指示項目を追加する｡その選択肢は次の通り: Both compressing and decompressing channel transformations add extra configuration options that may be accessed through chan configure. The options are:

    -checksum checksum
      この読出し専用指示項目は圧縮譜が以前に見た非圧縮データのための現在の検査和を得る｡それは､圧縮と解凍の両方に適しているが､生の非圧縮や解凍形式には適さない｡圧縮の算法はどの形式が生成又は誂えられたかに依存する｡ This read-only option gets the current checksum for the uncompressed data that the compression engine has seen so far. It is valid for both compressing and decompressing transforms, but not for the raw inflate and deflate formats. The compression algorithm depends on what format is being produced or consumed.

    -dictionary binData
      この読み書き指示項目は 二進情報であるべきデータが圧縮又は解凍される時に使う為の最初の圧縮辞書を得るか設定する｡ gzip-形式のデータを伴って働く変換には適切でない､又変換が棚積みされている位置以外で圧縮変換に設定されるべきではない｡注意すべきは､これは現在の動作状態の圧縮辞書を得るには使用できない､理由は基礎になっている外部関数では情報が開示されていないから｡ This read-write options gets or sets the initial compression dictionary to use when working with compressing or decompressing the data to be binData. It is not valid for transformations that work with gzip-format data, and should not normally be set on compressing transformations other than at the point where the transformation is stacked. Note that this cannot be used to get the current active compression dictionary mid-stream, as that information is not exposed by the underlying library.

    -flush type
      この書き込み専用操作は基本的通信路に対する圧縮器の現在の状態を解消する｡これは圧縮変形に対してのみ有効である｡ 型 は通常の解消又は高度な解消に対してそれぞれ sync か full でなければならない｡解消操作は圧縮比を低下させるが､多くのデータ破損の場合ファイルの再生を容易にする｡ This write-only operation flushes the current state of the compressor to the underlying channel. It is only valid for compressing transformations. The type must be either sync or full for a normal flush or an expensive flush respectively. Flushing degrades the compression ratio, but makes it easier for a decompressor to recover more of the file in the case of data corruption.

    -header dictionary
      この読出し専用指示項目は､ gzip-形式のデータを処理する解凍変形の為にのみ有効であり､データ羅列を淀みなく読む冒頭部を記述している辞書を返す｡ 　 This read-only option, only valid for decompressing transforms that are processing gzip-format data, returns the dictionary describing the header read off the data stream.

    -limit readaheadLimit
      この読み書き指示項目は､解凍通信路によって基礎データ源から先に読み出すべきバイトの最大値を制御する為に使われる｡更なる情報は上記を参照されたい｡ This read-write option is used by decompressing channels to control the maximum number of bytes ahead to read from the underlying data source. See above for more information.

#### データ羅列の副命令　 STREAMING SUBCOMMAND

zlib stream mode ?options?
  データ羅列圧縮又は解凍命令を mode に従って作成し､命令の名前を返す｡どの命令が如何に動くかの説明は下の STREAMING INSTANCE COMMAND を参照されたい｡次の様式と指示項目に対応している: Creates a streaming compression or decompression command based on the mode, and return the name of the command. For a description of how that command works, see STREAMING INSTANCE COMMAND below. The following modes and options are supported:

  zlib stream compress ?-dictionary bindata? ?-level level?
    このデータ羅列は zlib-形式の出力を産する圧縮データ羅列になり､(もし指定されていると) 0 から 9 迄の整数の圧縮水準 level を使う､又､圧縮辞書 bindata (もし指定されると)を使う｡ The stream will be a compressing stream that produces zlib-format output, using compression level level (if specified) which will be an integer from 0 to 9, and the compression dictionary bindata (if specified).

  zlib stream decompress ?-dictionary bindata?
    このデータ羅列は zlib-形式の入力をとる非圧縮データ羅列になり､非圧縮の出力を産出する｡もし bindata が与えられると､要求された時に使う為の圧縮辞書である｡ The stream will be a decompressing stream that takes zlib-format input and produces uncompressed output. If bindata is supplied, it is a compression dictionary to use if required.

  zlib stream deflate ?-dictionary bindata? ?-level level?
    このデータ羅列は生の出力を産する圧縮データ羅列になり､(もし指定されていると) 0 から 9 迄の整数の圧縮水準 level を使う､又､圧縮辞書 bindata (もし指定されると)を使う｡註意すべきは生の圧縮データは､もしあっても､使われた圧縮辞書が何かに関するデータについてのデータはない; それは zlib-書式データの特性である｡ The stream will be a compressing stream that produces raw output, using compression level level (if specified) which will be an integer from 0 to 9, and the compression dictionary bindata (if specified). Note that the raw compressed data includes no metadata about what compression dictionary was used, if any; that is a feature of the zlib-format data.

  zlib stream gunzip
    このデータ羅列は gzip-形式の入力をとり非圧縮の出力を産出する非圧縮データ羅列である｡ The stream will be a decompressing stream that takes gzip-format input and produces uncompressed output.

  zlib stream gzip ?-header header? ?-level level?
    このデータ羅列は gzip-形式の出力を産する圧縮データ羅列になり､(もし指定されていると) 0 から 9 迄の整数の圧縮水準 level と､冒頭記述子辞書 header を使う(もし指定されていると; 鍵については zlib gzip を参照のこと)｡ The stream will be a compressing stream that produces gzip-format output, using compression level level (if specified) which will be an integer from 0 to 9, and the header descriptor dictionary header (if specified; for keys see zlib gzip).

  zlib stream inflate ?-dictionary bindata?
    このデータ羅列は､生の圧縮形式をとり､非圧縮の出力を産出する非圧縮データ羅列になる｡ bindata が供給されると､それは使う為の圧縮辞書である｡註意すべきは､圧縮辞書が正しいかを確かめるための確認はない｡ The stream will be a decompressing stream that takes raw compressed input and produces uncompressed output. If bindata is supplied, it is a compression dictionary to use. Note that there are no checks in place to determine whether the compression dictionary is correct.

#### 検査和副命令 CHECKSUMMING SUBCOMMANDS

zlib adler32 string ?initValue?
  二進列 string から Adler-32 算法によって検査和を算出する｡もし initValue が与えられると検査和処理譜に初期値として使われる｡ Compute a checksum of binary string string using the Adler-32 algorithm. If given, initValue is used to initialize the checksum engine.

zlib crc32 string ?initValue?
  二進列 string から CRC-32 算法によって検査和を算出する｡もし initValue が与えられると検査和処理譜に初期値として使われる｡ Compute a checksum of binary string string using the CRC-32 algorithm. If given, initValue is used to initialize the checksum engine.

### STREAMING INSTANCE COMMAND

データ羅列の圧縮の実現値命令は zlib stream 命令によって産出される｡それはデータを組込む為に put 副命令を一度あるいはそれ以上回の呼出しに使われ､変換したデータの抽出の為に一回或は複数回その get 副命令が使われる｡ Streaming compression instance commands are produced by the zlib stream command. They are used by calling their put subcommand one or more times to load data in, and their get subcommand one or more times to extract the transformed data.

データ羅列の実現値命令に対応している全ての副命令の stream は次の通り: The full set of subcommands supported by a streaming instance command, stream, is as follows:

stream add ?option...? data
  後に “stream get” が続く “stream put ?option...? data” の短縮操作｡ A short-cut for “stream put ?option...? data” followed by “stream get”.

stream checksum
  このデータ羅列にここまで見られた圧縮されていないデータの検査和を返す｡ Returns the checksum of the uncompressed data seen so far by this stream.

stream close
  このデータ羅列を削除し､関連した資源をすべて解放する｡ Deletes this stream and frees up all resources associated with it.

stream eof
  データ羅列が(圧縮データ自身によって定められた)末尾に達しているか否かを指示す論理値を返す｡全ての形式がデータ羅列の末尾の検出に対応している訳ではない｡ Returns a boolean indicating whether the end of the stream (as determined by the compressed data itself) has been reached. Not all formats support detection of the end of the stream.

stream finalize
  “stream put -finalize {}” の短縮操作｡ A short-cut for “stream put -finalize {}”.

stream flush
  “stream put -flush {}” の短縮操作｡ A short-cut for “stream put -flush {}”.

stream fullflush
  “stream put -fullflush {}” の短縮操作｡ A short-cut for “stream put -fullflush {}”.

stream get ?count?
  変換が適用されたデータ羅列 stream の内部緩衝域から count バイト迄返す｡もし count が省略されると緩衝域の全てのデータが返される｡ stream header はデータ羅列から抽出された gzip 辞書記述先頭文を返す｡ gunzip に設定されたその mode 假引数を伴って作成されたデータ羅列についてのみ対応する｡ Return up to count bytes from stream's internal buffers with the transformation applied. If count is omitted, the entire contents of the buffers are returned.

stream header
  流れから抽出されたgzip冒頭部記述辞書を返す｡ gunzipに設定した､そのmode假引数を伴って生成された流れに関してのみ対応する｡ Return the gzip header description dictionary extracted from the stream. Only supported for streams created with their mode parameter set to gunzip.

stream put ?option...? data
  変換を適用しながら二進文字列 data を stream の内部緩衝域に追記する｡次の option (又はその明確な前置辞)が運用され､適用される変換の方法を修正するために使われる: Append the contents of the binary string data to stream's internal buffers while applying the transformation. The following options are supported (or an unambiguous prefix of them), which are used to modify the way in which the transformation is applied:

  -dictionary binData
    binData となるデータを圧縮又は解凍する時に使う圧縮辞書を設定する｡ Sets the compression dictionary to use when working with compressing or decompressing the data to be binData.

  -finalize
    全てのバイトが完全に圧縮又は解凍されたことを確認するためにデータ羅列に終了の印を附す｡ gzip のデータ羅列に就いてはこれは､データ羅列に末尾部が書込まれたことをも保障する｡猶も get 副命令によってデータ羅列からデータが淀みなく読まれていても､その後に更なるデータが書かれる前にデータ羅列は刷新される必要がある｡ Mark the stream as finished, ensuring that all bytes have been wholly compressed or decompressed. For gzip streams, this also ensures that the footer is written to the stream. The stream will need to be reset before having more data written to it after this, though data can still be read out of the stream with the get subcommand.

    この指定項目は -flush と -fullflush とは相互に排他的で､両立しない｡ This option is mutually exclusive with the -flush and -fullflush options.

  -flush
    幾らかの出来ばえの対価として､現在の(圧縮した)データ羅列を消費している解凍機能が､更なる圧縮された全てのバイトが生成することになるバイトを生成できることを保障する｡ Ensure that a decompressor consuming the bytes that the current (compressing) stream is producing will be able to produce all the bytes that have been compressed so far, at some performance penalty.

    この指定項目は -finalize と -fullflush とは相互に排他的で､両立しない｡ This option is mutually exclusive with the -finalize and -fullflush options.

  -fullflush
    解凍譜機能が産出された全てのバイトを処理できるだけでなく(上の -flush の様に)､データ羅列が部分的に損傷している事を検出した点から再処理することができることを保障する｡これは実行能力の負担が大きい｡ Ensure that not only can a decompressor handle all the bytes produced so far (as with -flush above) but also that it can restart from this point if it detects that the stream is partially corrupt. This incurs a substantial performance penalty.

    この指定項目は -finalize と -flush とは相互に排他的で､両立しない｡ This option is mutually exclusive with the -finalize and -flush options.

stream reset
  完了してしまった或はデータ末尾に達した､いかなるデータ羅列も出力し､更なるデータが処理できる状態に戻す｡内部緩衝域内の全てのデータを払出す｡　 Puts any stream, including those that have been finalized or that have reached eof, back into a state where it can process more data. Throws away all internally buffered data.

### 用例 EXAMPLES

Tcl の文字列を圧縮する為には､最初に特定の文字符号系に変換しておくべきである､理由は zlib 命令は常に二進化文字列を操作するものだから｡ To compress a Tcl string, it should be first converted to a particular charset encoding since the zlib command always operates on binary strings.

    set binData [encoding convertto utf-8 $string]
    set compData [zlib compress $binData]

復元する時に､文字符号に戻すことを忘れてはならない｡ When converting back, it is also important to reverse the charset encoding:

    set binData [zlib decompress $compData]
    set string [encoding convertfrom utf-8 $binData]

上述の圧縮操作はデータ羅列に対しても適用でき､段階毎にデータを累積したい場合は特に有効である: The compression operation from above can also be done with streams, which is especially helpful when you want to accumulate the data by stages:

    set strm [zlib stream compress]
    $strm put [encoding convertto utf-8 $string]
    # ...
    $strm finalize
    set compData [$strm get]
    $strm close

### SEE ALSO

binary, chan, encoding, Tcl_ZlibDeflate, RFC1950 - RFC1952

### KEYWORDS

compress, decompress, deflate, gzip, inflate, zlib
Copyright © 2008-2012 Donal K. Fellows