メインコンテンツまでスキップ
バージョン: 開発中

COMPRESS BLOB

COMPRESS BLOB ( BLOB {; compression} )

引数説明
BLOBBLOB🡒圧縮するBLOB
compression倍長整数🡒省略されない場合: 1, 圧縮率優先で圧縮 2, 速度優先で圧縮

説明

COMPRESS BLOBコマンドは、圧縮アルゴリズムを使用してBLOB blobを圧縮します。

オプションのcompression引数を使用すると、BLOBを圧縮する方法を設定できます。BLOBテーマの以下の定義済み定数を指定できます:

定数コメント
Compact compression mode倍長整数1圧縮解凍の処理速度と引き換えに、BLOBをできるだけ小さく圧縮します。デフォルトモード。
Fast compression mode倍長整数2圧縮率と引き換えにBLOBをできるだけ速く圧縮・解凍します (圧縮されたBLOBのサイズは大きくなります)。
GZIP best compression mode倍長整数-1GZIP圧縮で圧縮率を優先します。
GZIP fast compression mode倍長整数-2GZIP圧縮で速度を優先します。

他の値を渡した場合、またはcompressionを省略した場合、圧縮モード1 (compact internal compression) が使用されます。

: このコマンドは、サイズが255バイト以上のBLOBだけを圧縮します。

呼び出し後、BLOBが圧縮されればOK変数に1が設定されます。メモリ不足やBLOBサイズが255バイト未満などの理由で圧縮が行われなかった場合、OK変数に0が設定されます。エラーは生成されず、メソッドは実行をレジュームします。
(BLOBが壊れているなど) 他のケースの場合、エラー-10600が生成されます。このエラーはON ERR CALLコマンドを使用してとらえることができます。

BLOB圧縮後、EXPAND BLOBコマンドを使用して解凍できます。

BLOBが圧縮されているかどうかを知るにはBLOB PROPERTIESコマンドを使用します。

警告: 圧縮されたBLOBもBLOBであり、そのコンテンツを編集できます。しかしそうしてしまうと、EXPAND BLOBコマンドは正しくBLOBを解凍できなくなります。

例題 1

この例題 はBLOB vxMyBlobが圧縮されているかテストし、されていなければ圧縮します:

 BLOB PROPERTIES(vxMyBlob;$vlCompressed;$vlExpandedSize;$vlCurrentSize)
 If($vlCompressed=Is not compressed)
    COMPRESS BLOB(vxMyBlob)
 End if

すでに圧縮されているBLOBにCOMPRESS BLOBを適用した場合、コマンドはそれを検知し、何も行いません。

例題 2

この例題は、ドキュメントを選択させ、それを圧縮します:

 $vhDocRef :=Open document("")
 If(OK=1)
    CLOSE DOCUMENT($vhDocRef)
    DOCUMENT TO BLOB(Document;vxBlob)
    If(OK=1)
       COMPRESS BLOB(vxBlob)
       If(OK=1)
          BLOB TO DOCUMENT(Document;vxBlob)
       End if
    End if
 End if

例題 3

GZIPで圧縮されたraw HTTPデータを送信します:

 COMPRESS BLOB($blob;GZIP Best compression mode)
 var $vEncoding : Text
 $vEncoding:="Content-encoding: gzip"
 WEB SET HTTP HEADER($vEncoding)
 WEB SEND RAW DATA($blob ;*)

システム変数およびセット

BLOBが正しく圧縮されると、システム変数OKは1に設定されます。そうでなければ0に設定されます。

参照

BLOB PROPERTIES
EXPAND BLOB