4D v12.4

COMPRESS BLOB

ホーム

 
4D v12.4
COMPRESS BLOB

 

COMPRESS BLOB 


 

COMPRESS BLOB ( BLOB {; compression} ) 
引数   説明
BLOB  BLOB in 圧縮するBLOB
compression  倍長整数 in 省略されない場合: 1, 圧縮率優先で圧縮 2, 速度優先で圧縮

説明   

COMPRESS BLOB コマンドは、4D内部の圧縮アルゴリズムを使用して、BLOB blobを圧縮します。このコマンドは、サイズが255バイトを超えるBLOBだけを圧縮します。

オプションのcompression 引数を使用すると、BLOBを圧縮する方法を設定できます:

  • 1を渡すと、圧縮および解凍の操作の速度と引き換えに、BLOBができるだけ小さく圧縮されます。
  • 2を渡すと、圧縮率と引き換えに(圧縮されたBLOBのサイズは大きくなります)、BLOBができるだけ速く圧縮されます(展開の速度もできるだけ速くなります)。
  • 他の値を渡す、または引数を省略すると、圧縮モード1を使用してBLOBができるだけ小さく圧縮します。

4Dは、以下の事前定義定数を提供します:

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

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

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

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

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

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

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

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

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

 $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

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

 
プロパティ 

プロダクト: 4D
テーマ: BLOB
番号: 534

このコマンドはOKシステム変数を更新しますErrorシステム変数が更新されることがあります。

 
履歴 

変更: 4D v6.5.3

 
参照 

BLOB PROPERTIES
EXPAND BLOB

 
タグ 

Compression, blob compression***