#!/bin/csh
#######################################################################################################################################
# #
# C O M P R E S S I O N E T A R C H I V A G E D ' U N E L I S T E D ' I M A G E S #
# O U O P E R A T I O N I N V E R S E : #
# #
# #
# Utilisation : #
# #
# $xci/Gen_COMPR$vv$Z <Racine_images> <premiere> <derniere> <palette> <FluxResultat> [<Inverser> [<NomArchive> [<Pas>]] #
# $xci/Gen_COMPR$vv$Z <Racine_images> <premiere> <derniere> RVB <FluxResultat> [<Inverser> [<NomArchive> [<Pas>]] #
# #
# #
# Nota : #
# #
# Cette commande se veut similaire a la #
# commande 'v $xci/Gen_MPEG$vv$Z'. La #
# difference majeure est que d'une part #
# '$xci/Gen_COMPR$vv$Z' est reversible et #
# que d'autre part, elle sauvegarde les #
# images originales d'une sequence. Enfin, #
# en mode fausses couleurs ("$Palette" != "$RVB_DKVP") #
# elle est independante evidemment de toute #
# palette de couleurs... #
# #
# Suivant la nature de '$Palette' le fichier #
# genere par '$xci/Gen_COMPR$vv$Z' sera plus #
# volumineux que celui genere par '$xci/Gen_MPEG$vv$Z' #
# ("$Palette" == "$RVB_DKVP") ; cela sera le #
# contraire pour la condition opposee ("$Palette" != "$RVB_DKVP"). #
# a titre d'exemple : #
# #
# SIZE($xiak/NCOR.f9$MPEG) = 27.098.157 --> 74.885.120 > 27.098.157 #
# SIZE($xiad/TREF.41$MPEG) = 51.791.397 --> 30.801.920 < 51.791.397 #
# #
# la premiere taille correspondant a '$xci/Gen_MPEG$vv$Z' #
# et la seconde a '$xci/Gen_COMPR$vv$Z'. Evidemment, ces #
# conclusions ne sont pas "absolues" car, en effet, la #
# nature des images intervient aussi... #
# #
# #
# Author of '$xci/Gen_COMPR$vv$Z' : #
# #
# Jean-Francois Colonna (LACTAMME, 20030925094306). #
# #
#######################################################################################################################################
set RacineP=($1)
set premiereI=$2
set derniereI=$3
set Palette=$4
# On notera que le test sur '$Palette' ne concerne que la valeur particuliere '$RVB_DKVP' #
# (etre egal a, ou ne pas etre egal a...). #
set FluxResultat=$5
set Inverser=$6
set NomArchive=$7
set Pas=$8
setArgum Inverser $NEXIST
# Par defaut, on procede a une compression puis a un archivage... #
if ("$NomArchive" == "$K_VIDE") then
#20030926094217____: set NomArchive="SEQUENCE" #
set NomArchive="IMAG"
# Par defaut, la sequence s'appellera 'SEQUENCE' dans le fichier '$FluxResultat'. Ce nom, #
# trop long, a ete change en 'IMAG' le 20030926094217... #
else
endif
setArgum Pas 1
# Lorsque cet argument est absent, on lui donne la valeur '1' parce que c'est la valeur la #
# plus logique (qui etait aussi la valeur implicite anterieure...). #
set Racine=$RacineP[1]
# Recuperation de la racine... #
set NoError_DKVP=$EXIST
source $Fdisk_video_P
unset NoError_DKVP
set Postfixe="$K_VIDE"
# A priori, on considere qu'il n'y a pas de postfixe... #
if ($#RacineP > 1) then
if ("$Palette" == "$RVB_DKVP") then
EROR "En mode 'RVB' les noms des images ne peuvent etre postfixes."
else
set Postfixe=$RacineP[2]
# Cas ou il y a un postfixe et que l'on est en mode "palette"... #
endif
else
endif
set DiReCtOrY=`GetPath $Racine`
set SeQuEnCe=`GetLeaf $Racine`
# Recuperation du directory d'appartenance de la sequence et de son nom relatif... #
FileTmpB FLiStE
FileTmpB Fcompression $Y
if ("$Palette" == "$RVB_DKVP") then
$xci/nombres$X \
A=$K_VIDE p=$premiereI d=$derniereI pas=$Pas postfixe=$ROUGE lignes=VRAI CAL1=FAUX \
> $FLiStE
$xci/nombres$X \
A=$K_VIDE p=$premiereI d=$derniereI pas=$Pas postfixe=$VERTE lignes=VRAI CAL1=FAUX \
>>! $FLiStE
$xci/nombres$X \
A=$K_VIDE p=$premiereI d=$derniereI pas=$Pas postfixe=$BLEUE lignes=VRAI CAL1=FAUX \
>>! $FLiStE
else
$xci/nombres$X \
A=$K_VIDE p=$premiereI d=$derniereI pas=$Pas lignes=VRAI CAL1=FAUX \
> $FLiStE
# Le 'CAL1=FAUX' est destine a eliminer les messages emis dans le cas ou le pas n'est pas #
# egal a l'unite ('v $xil/defi_K2$vv$DEF DoQu')... #
endif
$CA $xcs/csh$Y \
> $Fcompression
$CA $FLiStE | \
$SOR | \
$R "$K_BLANC" "$K_NL" | \
$GRE -v '^ *$' | \
$SE -e "s/^/CoDaGe /" \
>>! $Fcompression
# Generation du programme de compression de la sequence argument... #
FileTmpE FLiStE
if ($Inverser == "$NEXIST") then
# Cas de la compression et de l'archivage : #
xT
# On se place dans le directory ou implanter les images compressees de la sequence. #
$DELETE $NomArchive.* >& $nul
# Nettoyage a priori... #
alias CoDaGe 'set ImAgE="\!*" ; \\
set ImA_A=$DiReCtOrY$K_sepS$SeQuEnCe.$ImAgE$Postfixe ; set ImA_R=$NomArchive.$ImAgE$Postfixe ; \\
DATEf $ImA_A ; set DaTe=`DATEfD` ; unset Fdate ; \\
$DELETE $ImA_R ; \\
$CA $ImA_A | \\
$bCOMPRES > $ImA_R ; \\
retouche $ImA_R $DaTe ; \\
unset ImAgE DaTe ImA_A ImA_R'
# Compression du fichier courant avec conservation de la date... #
source $Fcompression
# Compression de la sequence argument... #
unalias CoDaGe
$TAR cvf \
$FluxResultat \
$NomArchive.* \
>& $nul
# Et enfin, archivage de la sequence argument... #
$DELETE $NomArchive.* >& $nul
# Nettoyage a posteriori... #
else
# Cas du desarchivage et de la decompression : #
xT
# On se place dans le directory ou implanter les images compressees de la sequence. #
$DELETE $NomArchive.* >& $nul
# Nettoyage a priori... #
$TAR xvf \
$FluxResultat \
>& $nul
# Au pralable, desarchivage de la sequence argument... #
alias CoDaGe 'set ImAgE="\!*" ; \\
set ImA_A=$NomArchive.$ImAgE$Postfixe ; set ImA_R=$DiReCtOrY$K_sepS$SeQuEnCe.$ImAgE$Postfixe ; \\
DATEf $ImA_A ; set DaTe=`DATEfD` ; unset Fdate ; \\
$DELETE $ImA_R ; \\
$CA $ImA_A | \\
$bUNCOMPRES > $ImA_R ; \\
retouche $ImA_R $DaTe ; \\
unset ImAgE DaTe ImA_A ImA_R'
# Decompression du fichier courant avec conservation de la date... #
source $Fcompression
# Decompression de la sequence argument... #
unalias CoDaGe
$DELETE $NomArchive.* >& $nul
# Nettoyage a posteriori... #
endif
FileTmpE Fcompression