Aller au contenu principal
Version: 20 R7 BETA

COMPRESS BLOB

COMPRESS BLOB ( blob {; compression} )

ParamètreTypeDescription
blobBlobBLOB à compresser
compressionIntegerSi ce paramètre est passé : 1= taux de compression maximum 2 = vitesse de compression maximum

Description

COMPRESS BLOB compresse le BLOB blob à l'aide d'un algorithme de compression.

Le paramètre optionnel compression vous permet de fixer la façon dont le BLOB sera compressé. Passez dans ce paramètre une des constantes suivantes, placées dans le thème BLOB :

ConstanteTypeValeurComment
Compact compression modeEntier long1Compression interne la plus compacte (au détriment de la vitesse à laquelle la compression et la décompression sont effectuées). Méthode par défaut.
Fast compression modeEntier long2Compression/décompression interne la plus rapide au détriment du taux de compression (une fois compressé, le BLOB prend plus de place)
GZIP best compression modeEntier long-1Compression GZIP la plus compacte (au détriment de la vitesse à laquelle la compression et la décompression sont effectuées)
GZIP fast compression modeEntier long-2Compression/décompression GZIP la plus rapide (au détriment du taux de compression)

Si vous passez une autre valeur ou si vous omettez le paramètre compression, la méthode de compression 1 est utilisée (algorithme interne compact).

Note : La commande compresse uniquement les BLOBs de taille supérieure ou égale à 255 octets.

Après que cette commande ait été appelée, la variable système OK prend la valeur 1 si le BLOB a été correctement compressé.
Si la compression n'a pu être effectuée, OK prend la valeur 0. Dans ce cas, si l'erreur provient du fait que la taille du BLOB est inférieure à 255 octets ou que la mémoire disponible est insuffisante pour effectuer l'opération, aucune erreur n'est générée, la méthode poursuit son exécution.
En revanche, si l'erreur est causée par un problème plus important (le BLOB est endommagé), l'erreur -10600 est générée. Cette erreur, relativement rare, peut être interceptée à l'aide d'une méthode installée par la commande ON ERR CALL.

Lorsqu'un BLOB a été compressé, vous pouvez le décompresser à l'aide de la commande EXPAND BLOB.

Pour savoir si un BLOB a été compressé, utilisez la commande BLOB PROPERTIES.

ATTENTION : Un BLOB compressé est toujours un BLOB, rien ne vous empêche donc de modifier son contenu. Cependant, si vous le modifiez, la commande EXPAND BLOB ne pourra plus décompresser correctement le BLOB.

Exemple 1

L'exemple suivant teste si le BLOB vxMonBlob est compressé et, sinon, le compresse :

 BLOB PROPERTIES(vxMonBlob;$vlCompressé;$vlTailleDécompressée;$vlTailleCourante)
 If($vlCompressé=Is not compressed)
    COMPRESS BLOB(vxMonBlob)
 End if

Notez que si vous appliquez COMPRESS BLOB à un BLOB déjà compressé, la commande le détecte et ne fait rien.

Exemple 2

L'exemple suivant vous permet de sélectionner un document puis de le compresser :

 $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

Exemple 3

Envoi de données HTTP brutes compressées en GZIP :

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

Variables et ensembles système

La variable OK prend la valeur 1 si le BLOB a été correctement compressé, sinon elle prend la valeur 0.

Voir aussi

BLOB PROPERTIES
EXPAND BLOB