#!/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