#!/bin/csh ####################################################################################################################################### # # # R E C A D R A G E D E S A N C I E N S " H A R D - C O P I E S " T E K T R O N I X : # # # # # # Utilisation : # # # # $xci/RecadrageHardCopy.02$vv$Z <imaA> <imaR> [<formatR> [<Mode> [<Scroll> [<MargeS> [<Seuil> [<FacX [<FacY> [<Trans>]]]]]]] # # # # # # Author of '$xci/RecadrageHardCopy.02$vv$Z' : # # # # Jean-Francois COLONNA (LACTAMME, 20220207103820). # # # ####################################################################################################################################### set imageA=$1 set imageR=$2 set FormatR=($3) set Mode=$4 set Scroll=$5 # Parametre introduit le 20220208121619 pour 'v $xiHi/OLDIES_BUT_GOLDIES_NB.recadree.0001'. # set MargeS=$6 # Parametre introduit le 20220208121619 pour 'v $xiHi/OLDIES_BUT_GOLDIES_NB.recadree.0013'. # set Seuil=$7 set FactX=$8 set FactY=$9 set Trans="$10" # Parametre introduit le 20240318172427 pour 'v $xiHi/OLDIES_BUT_GOLDIES_NB.0101$JPEG'... # setArgum FormatR $formatR_Pdu setArgum Mode 2 setArgum Scroll $EXIST setArgum MargeS 0 setArgum Seuil 252 setArgum FactX 10 setArgum FactY 10 setArgum Trans "$K_VIDE" if (-e $imageA) then S FilSTmpB ImAgEt $CONVERT -depth $NBitsOctet JPEG:$imageA $Trans JPEG:$ImAgEt.0$JPEG #2024031817:set DiMeNsIoNs=`$CONVERT -verbose -depth $NBitsOctet -flip JPEG:$imageA RGBA:$ImAgEt.1$RVB |& $GRE "$imageA" | $HEA -1` # set DiMeNsIoNs=`$CONVERT -verbose -depth $NBitsOctet -flip JPEG:$ImAgEt.0$JPEG RGBA:$ImAgEt.1$RVB |& $GRE "$ImAgEt.0$JPEG" | $HEA -1` set DiMeNsIoNs=`echo "$DiMeNsIoNs" | $R "$K_TAB" "$K_BLANC"` set DiMeNsIoNs=`echo "$DiMeNsIoNs" | $SE -e 's/^.* \([0-9][0-9]*\)x\([0-9][0-9]*\)[ +].*$/\1 \2/'` # C'est 'v $xiMo/creation$Z le.format.a.encore.change' qui a fourni les quelques instructions # # qui precedent... # SwapB $ImAgEt.1$RVB @ DiMeNsIoNsX = $DiMeNsIoNs[1] - 0 @ DiMeNsIoNsY = $DiMeNsIoNs[2] - 0 gFITn FIT1 $DiMeNsIoNsX $DiMeNsIoNsY FIT1 unset DiMeNsIoNsX unset DiMeNsIoNsY unset DiMeNsIoNs $xci/RVB_load$X \ A=$ImAgEt.1$RVB \ RVB=VRAI \ R=$ImAgEt.2 \ $formatI if ($Scroll == $EXIST) then $xci/luminance.01$X \ A=$ImAgEt.2 \ $formatI | \ $xci/seuil$X \ seuil=$Seuil \ inferieur=$NOIR superieur=$BLANC \ $formatI | \ $xci/dilate.01$X \ dilatation=VRAI \ R=$ImAgEt$LUMIN \ $formatI set Xcentre=`calculINS $Xmin+($dimX/2)` set Ycentre=`calculINS $Ymin+($dimY/2)` set PoInT=`$xci/niveau$X A=$ImAgEt$LUMIN x=$Xmin y=$Ycentre Prme=VRAI` if ($PoInT != $BLANC) then EROR "La luminance de '$imageA' n'est pas correcte -1-." else endif set PoInT=`$xci/niveau$X A=$ImAgEt$LUMIN x=$Xcentre y=$Ymin Prme=VRAI` if ($PoInT != $BLANC) then EROR "La luminance de '$imageA' n'est pas correcte -2-." else endif $xci/S_point$X \ A=$ImAgEt$LUMIN \ niveau=$BLANC \ x=$Xmin y=$Ycentre \ $formatI | \ $xci/S_point$X \ niveau=$BLANC \ x=$Xcentre y=$Ymin \ R=$ImAgEt$LUMIN \ $formatI # On fait ensuite l'hypothese que l'image '$ImAgEt$LUMIN' a l'apparence suivante : # # # # # # --------------------------------------- # # |*** | # # |*** | # # |*** | # # |*** | # # |*** | # # |*** NOIR | # # |*** | # # |A** | # # |*** | # # |*** | # # |*** | # # |***************************************| # # |*******************BLANC***************| # # |***************************************| # # |*******************B*******************| # # --------------------------------------- # # # # # # Ci-apres, on va donc decaler a gauche jusqu'a ce que le point : # # # # A={$Xmin,$Ycentre} # # # # qui initialement est '$BLANC' devienne '$NOIR' : # # # # # # --------------------------------------- # # | | # # | | # # | | # # | | # # | | # # | NOIR | # # | | # # |A | # # | | # # | | # # | | # # |************************************ | # # |*******************BLANC************ | # # |************************************ | # # |*******************B**************** | # # --------------------------------------- # # # # # # Ensuite, on fera un decalage vers le bas jusqu'a ce que le point : # # # # B={$Xcentre,$Ymin} # # # # qui initialement est '$BLANC' devienne '$NOIR' : # # # # # # --------------------------------------- # # | | # # | | # # | | # # | | # # | | # # | NOIR | # # | | # # |A | # # | | # # | | # # | | # # | | # # | | # # | | # # | B | # # --------------------------------------- # # # set PaS_TrAnSlAtIoN_X=`$xcg/DIVZ.01$X a=$FactX b=$dimX signe="$K_VIDE"` set PaS_TrAnSlAtIoN_Y=`$xcg/DIVZ.01$X a=$FactY b=$dimY signe="$K_VIDE"` # Les parametres '$Fact?' fait qu'on se translate par "paquets" de '$FactX' colonnes # # et '$FactY' lignes... # set TrAnSlAtIoN_X=$PaS_TrAnSlAtIoN_X set TrAnSlAtIoN_Y=0 set NoIr=`echo $NOIR | $SE -e 's/^0*\(0\)$/\1/'` # Et ce a cause du fait que '$NOIR' vaut '000' et non pas '0', ce qui donc contrarierait # # les deux tests de '$PoInT' ci-apres... # set ItErEr=$EXIST while ($ItErEr == $EXIST) $xci/scroll$X \ A=$ImAgEt$LUMIN \ toreX=FAUX trX=-$TrAnSlAtIoN_X \ toreY=FAUX trY=-$TrAnSlAtIoN_Y \ R=$ImAgEt$LUMIN.1 \ $formatI # Decalage a gauche... # set PoInT=`$xci/niveau$X A=$ImAgEt$LUMIN.1 x=$Xmin y=$Ycentre Prme=VRAI` if ($PoInT == $NoIr) then set ItErEr=$NEXIST # On s'arrete lorsque la bande verticale (de gauche et contenant le point 'A') a # # completement disparu... # else set TrAnSlAtIoN_X=`$xcg/ADD2.01$X a=$TrAnSlAtIoN_X b=$PaS_TrAnSlAtIoN_X signe="$K_VIDE"` endif end set TrAnSlAtIoN_Y=$PaS_TrAnSlAtIoN_Y set ItErEr=$EXIST while ($ItErEr == $EXIST) $xci/scroll$X \ A=$ImAgEt$LUMIN \ toreX=FAUX trX=-$TrAnSlAtIoN_X \ toreY=FAUX trY=-$TrAnSlAtIoN_Y \ R=$ImAgEt$LUMIN.1 \ $formatI # Decalage vers le bas... # set PoInT=`$xci/niveau$X A=$ImAgEt$LUMIN.1 x=$Xcentre y=$Ymin Prme=VRAI` if ($PoInT == $NoIr) then set ItErEr=$NEXIST # On s'arrete lorsque la bande horizontale (inferieure et contenant le point 'B') a # # completement disparu... # else set TrAnSlAtIoN_Y=`$xcg/ADD2.01$X a=$TrAnSlAtIoN_Y b=$PaS_TrAnSlAtIoN_Y signe="$K_VIDE"` endif end set TrAnSlAtIoN_X=`$xcg/ADD2.01$X a=$TrAnSlAtIoN_X b=$MargeS signe="$K_VIDE"` set TrAnSlAtIoN_Y=`$xcg/ADD2.01$X a=$TrAnSlAtIoN_Y b=$MargeS signe="$K_VIDE"` # La marge de securite "manuelle" a ete introduite le 20220208121619... # if ( (`$xcg/IFGE.01$X a=$TrAnSlAtIoN_X b=1` == $EXIST) \ || (`$xcg/IFGE.01$X a=$TrAnSlAtIoN_Y b=1` == $EXIST) \ ) then EROR "L'image '$imageA' ne peut etre translatee." #20220208133200____: set TrAnSlAtIoN_X=0 # #20220208133200____: set TrAnSlAtIoN_Y=0 # set TrAnSlAtIoN_X=$PaS_TrAnSlAtIoN_X set TrAnSlAtIoN_Y=$PaS_TrAnSlAtIoN_Y # C'est le cas, par exemple, de 'v $xiHi/OLDIES_BUT_GOLDIES_NB.recadree.0001'... # else endif set TrAnSlAtIoN_Xs2=`$xcg/MOIT.01$X a=$TrAnSlAtIoN_X signe="$K_VIDE"` set TrAnSlAtIoN_Ys2=`$xcg/MOIT.01$X a=$TrAnSlAtIoN_Y signe="$K_VIDE"` execRVB $xci/scroll$X \ A=$ImAgEt.2%s \ toreX=FAUX trX=-$TrAnSlAtIoN_X \ toreY=FAUX trY=-$TrAnSlAtIoN_Y \ R=$ImAgEt.3%s \ $formatI if ($NEXIST) then # Test introduit le 20220210074819 afin de remplacer le decalage qui suit par un reformatage. # execRVB $xci/scroll$X \ A=$ImAgEt.3%s \ toreX=FAUX trX=+$TrAnSlAtIoN_Xs2 \ toreY=FAUX trY=+$TrAnSlAtIoN_Ys2 \ R=$ImAgEt.4%s \ $formatI # La translation {-$TrAnSlAtIoN_X,-$TrAnSlAtIoN_Y} elimine les zones verticale de gauche # # et horizontale du bas. La translation {+$TrAnSlAtIoN_Xs2,+$TrAnSlAtIoN_Ys2} centre l'image # # Resultat... # else set DiMeNsIoNs_X=`calculINS (1-$TrAnSlAtIoN_X-$MargeS)*$dimX` set DiMeNsIoNs_Y=`calculINS (1-$TrAnSlAtIoN_Y-$MargeS)*$dimY` gFITn FIT2 $DiMeNsIoNs_X $DiMeNsIoNs_Y execRVB $xci/format.01$X \ A=$ImAgEt.3%s \ $formatI \ mode=3 \ R=$ImAgEt.5%s \ $formatR_FIT2 FIT2 execRVB $xci/format.01$X \ A=$ImAgEt.5%s \ $formatI \ mode=2 \ R=$ImAgEt.4%s \ $formatR_FIT1 FIT1 endif else execRVB $xci/neutre$X \ A=$ImAgEt.2%s \ R=$ImAgEt.4%s \ $formatI # Possibilite "neutre" introduite le 20220208121619... # endif execRVB $xci/format.01$X \ A=$ImAgEt.4%s \ $formatI \ mode=$Mode \ R=$imageR%s \ $FormatR # On notera que : # # # # FIT1 formatI="Xmin=0 Xmax=2337 Ymin=0 Ymax=1653" # # 2338/1654 = 1.4135 # # # # Pdu formatI="Xmin=0 Xmax=1559 Ymin=0 Ymax=1149" # # 1560/1150 = 1.3565 # # # # Pal formatI="Xmin=0 Xmax=779 Ymin=0 Ymax=574" # # 780/575 = 1.3565 # # # # Les deux formats 'FIT1' et 'Pdu' (ainsi que 'Pal' et d'autres "homothetiques"...) ont des # # proportions assez proches... # FilSTmpE ImAgEt else EROR "L'image '$imageA' n'existe pas." endif