Quai Sud, 2 minutes d'arrêt

Ahanements d'octets austraux

samedi 19 juillet 2008

[ 22:49 ] Tant de photos, si peu de temps...

Il n'est pas besoin d'être grand clerc, à la lecture du précédent billet, pour se douter que je prends pas mal de photos ces temps-ci.

Toutes ne sont pas très bonnes, mais les moments capturés étant rares, je jette très peu. Euh, peut-être aussi que je suis un peu trop vaniteux, et que je me dis que n'importe quel cliché pris pourra un jour avoir un réel intérêt...

Ceci m'a obligé à affiner mon flux de traitement des fichiers RAWs. D'autant qu'un malheur (vol) étant arrivé au Fuji E900, un article m'a fait céder aux charmes du Nikon D60. Et avec cet appareil, aucune raison valable de ne pas utiliser systématiquement le mode Raw : contrairement à la plupart des compacts, cet appareil ne souffre d'aucun ralentissement lorsqu'il travaille en raw.

Par contre, vous savez sans doute ce que c'est... Lorsqu'on a plus de plaisir à faire une chose, on le fait plus, donc les volumes augmentent... Bref, il est nécessaire d'être bien organisé.

Le menu contextuel qui apparaît dans le Finder a donc légèrement évolué :

Menu contextuel sous MacOS X

Le coeur du traitement demeure le traitement des fichiers Raws, qui fait désormais apparaître un dialogue permettant de choisir quelques options de traitement pour le lot concerné.

Dialogue de Develop

Sous le capot, pas mal d'astuces et de découvertes ont été incorporées. L'objectif reste toujours de traiter rapidement et sans avoir à se poser de grandes questions métaphysiques un grand nombre de fichiers RAW, tout en assurant une qualité standard tout à fait comparable à celle de logiciels commerciaux.

Ce traitement standard laisse cependant la possibilité de retravailler des fichiers pleine résolution, et ce sans perdre la richesse d'information contenue dans le fichier RAW.

Pour utiliser ce petit outil que je trouve ma foi fort pratique, on peut le télécharger à <http://blog.barijaona.com/download/LPMM-photokit.zip>

Le tout est livré sous licence libre BSD. Les "intégristes" de l'open source pourront supprimer la partie créant un fichier DNG qui fait appel à Adobe DNG Converter (en mode ligne de commande), et qui ne me sert en fait que très rarement, et les non Macqueux n'ont que faire des appels à la commande sips.

Pour ceux qui sont intéressés par les détails, c'est après le saut.


Le logiciel a bénéficié principalement d'une correction de (grosse) bug, une amélioration du traitement des hautes lumières, et une meilleure prise en compte des besoins effectifs quotidiens.

Aïe, aïe, aïe, on écrit parfois de ces bêtises...

Le développement de base des fichiers raw se fait avec dcraw (actuellement en version 8.86).

La version précédente de dcraw que j'utilisais ne gérait pas explicitement les profils colorimétriques, aussi pensais-je qu'il n'appliquait aucun profil aux fichiers qu'il produisait lorsque je lui demandais une sortie en 16 bits (option -4).

Funeste pensée. Après m'être embrouillé entre les sorties au format PPM, au format TIFF, et avoir essayé avec différents appareils photos, j'ai finalement compris...

dcraw applique bien un profil colorimétrique à ses sorties ; cependant en mode 16 bits, les profils appliqués ont un gamma de 1, et ne sont absolument pas à confondre avec leurs homonymes qu'on rencontre un peu partout ailleurs et qui sont en général à un gamma 2,2, ou parfois 1,8.

Ayant compris cela, j'ai choisi de travailler en profil Prophoto (en version Gamma 1, donc), qui est un profil suffisamment large pour couvrir les capacités de la plupart des appareils existants...

Il faudra cependant savoir rester prudent si l'on fait des retouches intensives, car le spectre potentiellement couvert dépassera probablement celui de son écran de travail, et on a un petit risque de "créer" des couleurs dont on ne peut pas se rendre compte du rendu réel à l'écran...

dcraw, on croit commencer à le connaître, mais...

Pour je ne sais plus quelle raison, j'avais demandé précédemment à dcraw de traiter le RGB en 4 couleurs (option -f). Sans me rendre compte que cela forçait l'interpolation VNG, alors que par ailleurs je souhaitait l'interpolation AHD... Ah, ces logiciels en ligne de commande, il faut parfois activer leurs options de déboguage pour tout vérifier et tout comprendre...

Bref, on laisse désormais dcraw choisir lui-même l'interpolation qui lui paraît la meilleure : à en croire la documentation, l'AHD est sélectionné dans la plupart des cas, sauf pour les Fuji qui préfèrent le PNG.

Même en cherchant à simplifier, en informatique le dépouillement n'est jamais qu'apparent... Pour le traitement des hautes lumières, j'ai découvert les vertus de l'option -H 2. Grâce à des coefficients multiplicateurs des canaux RGB inférieurs à 1, cette option évite de perdre des informations dans les hautes lumières, tout en empêchant les blancs "purs" de prendre une teinte rose ou violette. Résultat : des transitions parfois plus naturelles entre les différents niveaux de hautes lumières.

Par contre, la tonalité générale de l'image "brute de raw" est encore plus sombre qu'avec l'option par défaut (-H 0), donc il faudra en tenir compte dans les traitements suivants.

A part le tirage 30x40...

2, 3, 5, 7... Tout le monde nous disait que la course aux mégapixels allait s'arrêter. En fait, elle ralentit à peine.

Apparemment condamnés par le marketing à bouffer toujours plus de pixels, nous finissons par être obligés de nous demander quoi en faire.

Certes, en garder toujours un peu "sous la pédale", ce n'est pas désagréable. Mais force est de constater qu'aller au delà de 2 millions de pixels est rarement utile... Une telle résolution suffit pour un tirage 13x18cm, qui est le maximum que l'on retrouve dans la plupart des albums de famille.

Donc, sauf besoin spécifique, on peut se contenter de demander à dcraw la demi-résolution. Le logiciel peut ainsi combiner simplement 4 pixels monochromes en un pixel RGB, sans avoir à faire une délicate interpolation de la matrice de Bayer : le gain en vitesse est conséquent, et cela garantit des couleurs justes et moins bruitées.

Avec le Nikon D60, cette option -h fournit des fichiers de 2,5 millions de pixels : 1950x1307, c'est plus qu'il n'en faut en mode plein écran sur un écran de 27 pouces (que je n'ai pas)... Le jour où je serai possesseur d'un écran Apple Cinema HD de 30 pouces (2560x1600 pixels quand même, soit 4 mégapixels, mais aussi 1800 dollars...), on rediscutera peut-être du besoin de manipuler de plus gros fichiers...

Contraste, en toute subtilité...

En présentant la version précédente, j'avais dit mon affection pour le rehaussement du contraste local qui permet de retrouver l'acutance du film. Mais j'avais aussi fait part de mes difficultés à mettre en oeuvre cette technique.

L'option -unsharp d'ImageMagick semblait bien trop lente avec les valeurs élevées de rayon nécessaires pour cette technique, et j'avais dû rechercher un succédané... Succédané qui sur le long terme aller se révéler moyennement satisfaisant.

Je me suis donc retrouvé à chercher à nouveau si on pouvait contourner cette lenteur d'-unsharp.

En fait, ImageMagick souffre principalement de deux choses dans ce type de traitement : sa rigueur mathématique, et une matrice de convolution qui peut prendre des proportions énormes.

Expliquons nous. Pour ce type d'opération, ImageMagick demande deux paramètres : un rayon (radius), et un écart-type (sigma). La documentation précise qu'il est recommandé d'avoir un rayon supérieur à l'écart-type, et même que le mieux est d'indiquer la valeur 0 pour le rayon afin de laisser le logiciel choisir lui-même le rayon en fonction de l'écart-type.

Parfait. Sauf qu'en opérant ainsi, une grande valeur d'écart-type entraîne une "monstrueuse" valeur de rayon. Si un écart-type de 1 entraîne un rayon de 3, un écart-type de 20 aboutit à un rayon de 151...

Pour m'éviter d'avoir à arborer une barbe blanche avant de montrer mes photos, j'ai choisi de brider les ambitions du logiciel en le restreignant à un rayon égal à 1,2 fois la valeur de l'écart-type... C'est peut-être une aberration mathématique (on s'éloigne de la belle et académique courbe de Gauss), mais honnêtement, je ne perçois pas la différence visuelle sur les photos...

Mais voilà encore un autre problème... Vous souvenez vous que je travaille avec des fichiers sans correction de gamma (gamma = 1) ? Cela assure en général une meilleure stabilité des couleurs lors des différents traitements... Sauf que dans le cas présent (rayon et sigma élevés), ça se traduit surtout par l'apparition de fort disgracieuses franges sombres, qui n'ont absolument rien de naturel...

Seule solution : passer temporairement dans un espace colorimétrique ayant une correction de gamma adaptée à l'oeil, avant d'appliquer le masque de flou, puis revenir en gamma 1 pour refusionner harmonieusement l'image accentuée et l'image originelle.

Le résultat attendu (une amélioration subtile de la netteté apparente de l'image) est enfin au rendez vous.

Contraste, comme un éléphant...

Le contraste local, c'est efficace et subtil, mais ça ne compense pas la différence de souplesse entre notre oeil et un capteur numérique. Ce n'est d'ailleurs pas fait pour ça...

Compte tenu des possibilités limitées du matériel, je suis en général amené, pour se rapprocher de ma perception, à privilégier le contraste dans les tons moyens, et pour cela à sacrifier celui dans les tons sombres et clairs. C'est ce que l'on fait en appliquant une courbe en S. Et ma foi, en général, ça suffit bien.

Mais il est parfois des cas où, au contraire, la partie intéressante ne se trouve pas vraiment dans les tons moyens, mais plutôt dans les ombres (ou plus rarement dans les hautes lumières), ce qui implique de travailler avec une courbe différente.

Par exemple, depuis la version CS, Photoshop offre un outil assez pratique pour ce type de situations, la commande "Tons foncés/Tons clairs...". Je dois admettre qu'on peut arriver à des résultats assez heureux, en général en précisant un rayon assez élevé (de l'ordre de 100 pixels), et en ayant la patte assez légère (sous peine de voir apparaître des transitions désagréables, caractéristiques de l'amplification de "marches d'escalier" dans les niveaux de lumière).

Mais malheureusement, on reste dans le cas par cas : je n'ai pas identifié un réglage "sans grand risque" que l'on puisse appliquer à toute une série d'images. Un contrôle visuel interactif pour chaque image reste quasi-obligatoire, donc cela va à l'encontre de mon objectif de productivité...

Pour faire du tout venant, j'ai trouvé une méthode que l'on pourrait qualifier de tone-mapping de pseudo-HDR.

Pseudo, en ce sens qu'au lieu de travailler à partir de plusieurs images exposées différemment pour étendre effectivement la dynamique de la capture, on utilise plusieurs versions du même fichier RAW : impossible donc de prétendre trouver plus d'informations que ce que notre capteur est capable d'enregistrer en une seule fois.

Tone-mapping, parce qu'on recompose trois versions : une sous-exposée, une moyennement exposée et une surexposée, pour revenir à une image de dynamique "moyenne".

Et là encore, pseudo, parce que pour privilégier la lisibilité générale de l'image, j'"exagère" le contraste de la version à exposition moyenne, ce qui m'éloigne du rendu HDR habituel et me ramène à un rendu plus classique.

Bref, la cuisine est tout à fait bizarre, mais les plats produits sont assez comestibles lorsqu'il s'agit de déboucher des ombres ou plus rarement de rendre plus lisible des hautes lumières quasi-brulées.

Et cela rend également bien lorsque des options propriétaires comme le "D-Lighting actif" entraînent une image sous-exposée avec la plupart des logiciels.

Vous pouvez sûrement améliorer tout cela...

Si je fais de l'open source, c'est (aussi) dans l'espoir que quelqu'un m'apportera la contradiction.

L'installation est relativement simple ; quitte à donner l'impression de me répéter, je vous encourage à le faire. Le plus délicat sera sans doute d'installer les pré-requis, mais il ne sera pas nécessaire de les compiler :

  • dcraw : le couteau suisse du décodage RAW se trouve en versions précompilées pour MacOSX et Windows chez Francisco Montilla. Pour ma part, j'ai installé ma version dans /usr/local/bin/.
  • Imagemagick, dont on trouvera des versions prêtes à installer pour pas mal d'OS ici. Dans mon installation sous MacOSX, j'ai créé un lien symbolique pour ne plus avoir à me soucier du numéro de version dans la suite des événements : sudo ln -s /usr/local/ImageMagick-6.4.0 /usr/local/ImageMagick (en supposant que l'on en soit à la version 6.4.0).
  • exiftool qui existe en version prête à installer sous MacOSX et Windows.

Le coeur de mon usine à gaz personnelle est un simple script, facile à modifier, et qui sous MacOSX (10.4 minimum), est directement accessible dans le fichier ~/Library/Automator/Develop.action/Contents/Resources/main.command. Le code source est aussi inclus dans l'archive disponible au téléchargement, et un portage sous Linux devrait être assez trivial.

Vous pouvez par exemple ajouter le support d'autres appareils photos gérés par dcraw que ceux que j'ai eu la chance de rencontrer. Il vous faudra trouver la valeur de saturation du capteur, en lisant ce qu'affiche dcraw -v fichier.raw ou, plus finement, en observant les valeurs correspondant à la luminosité maximum affichées par dcraw -c -D -4 -j fichier.raw | identify -verbose - .

Vous aurez vraisemblablement envie de tester d'autres options que les miennes pour certains réglages. N'hésitez surtout pas à bidouiller. Dans tous les cas, faites moi savoir le résultat de vos recherches !

Pour ceux qui ont la flemme de télécharger, voici le contenu du script :

#!/usr/bin/env sh

# main.command
# Develop

#  Created by Barijaona Ramaholimihaso on 20/06/08.

# Copyright (c) 2007-2008, Barijaona Ramaholimihaso <photokit@barijaona.com>

# All rights reserved.
# Redistribution and use in source and binary forms, with or without modification,
# are permitted provided that the following conditions are met:
#       .       Redistributions of source code must retain the above copyright notice,
#       this list of conditions and the following disclaimer.
#       .       Redistributions in binary form must reproduce the above copyright notice,
#       this list of conditions and the following disclaimer in the documentation
#       and/or other materials provided with the distribution.
#       .       Neither the name of Barijaona Ramaholimihaso nor the names of its contributors
#       may be used to endorse or promote products derived from this software
#       without specific prior written permission.

# Environment variables used
# $rotation : input variable
#       0 : rotate the picture 90° left ; 1 : don't rotate ; 2 : rotate 90° right
# $hires : input variable
#       0 : create half-size JPEG ; 1 : create full-size PNG (in folder "hires")
# $relight : input variable
#       0 : apply a simple contrast curve ; 1 : create a large dynamic range image (pseudo HDR)

PATH=/usr/local/bin:/usr/local/ImageMagick/bin:/bin:/sbin:/usr/bin:/usr/sbin
export PATH

# Uncomment the following for debugging
# set -xv
exec 2>/dev/console
IFS='
'

export MAGICK_HOME="/usr/local/ImageMagick"
export DYLD_LIBRARY_PATH="$MAGICK_HOME/lib"

versionscript='dcraw '`dcraw 2>&1 | grep -i \"dcraw\" | awk '{print $NF }'`'/BJR script v20080727'

if [ $relight -eq 1 ] ; then
        
versionscript=$versionscript' - Relight'
fi

case "$rotation" in
0)  rotcommand="-rotate -90" ;;
1)  rotcommand="" ;;
2)  rotcommand="-rotate 90" ;;
esac

while read i
do
        
cd "`dirname "$i"`"
        
dirlastname=$(pwd | awk -F / '{print $NF }')

        
if [ "$dirlastname" == 'raws' ]; then
                
cd ..
        
fi
        
if [ ! -d raws ] ; then
                
mkdir raws
        
fi
        
if [ $hires -eq 1 ] && [ ! -d hires ] ; then
                
mkdir hires
        
fi

        
# Camera specific settings
        
# rawfileext = raw files extension (NEF, CR2, RAF...)
        
# nrintensity = noise reduction intensity
        
# isomaxisharpen = ISO value above which we will
        
#     not try to sharpen (too much noise)
        
#     and we will blur colors informations
        
# noiseunder = brightness value under which we will blur colors informations
        
#     (portion of saturation for 100 ISO) 

        
cameramodel=$(exiftool -s -Model "$i" | awk '{print $3"-"$4 }')
        
case $cameramodel in
        
'FinePix-E900')
                
rawfileext=".RAF"
                
saturation=15872
                
nrintensity=75
                
isomaxisharpen=400
                
noiseunder=0.258
                
;;
        
'NIKON-D60')
                
rawfileext=".NEF"
                
saturation=4095
                
nrintensity=12.5
                
isomaxisharpen=1600
                
noiseunder=0.06
                
;;
        
'NIKON-D70')
                
rawfileext=".NEF"
                
saturation=4095
                
nrintensity=12.5
                
isomaxisharpen=1600
                
noiseunder=0.06
                
;;
        
'NIKON-D200')
                
rawfileext=".NEF"
                
saturation=4095
                
nrintensity=12.5
                
isomaxisharpen=1600
                
noiseunder=0.06
                
;;
        
'DMC-FZ18-')
                
rawfileext=".RAW"
                
saturation=3967
                
nrintensity=75
                
isomaxisharpen=400
                
noiseunder=0.258
        
esac

        
name=`basename "$i" "$rawfileext"`
        
        
        
# Develop with dcraw ; assign a linear profile
        
# get ISO value
        
iso=`exiftool -ISO "$i" | awk '{print $NF }'`
        
noisethold=$(echo "scale=0 ; $nrintensity*$iso/100" | bc -q)
        
if [ $noisethold -ge 400 ] ; then
                
noisethold = 400
        
fi
        
        
if [ $hires -eq 1 ] ; then
                
nice -n 16 dcraw -c -n $noisethold -4 -w -H 2 -o 4 "$i" |\
                 
nice -n 16 convert - $rotcommand\
                 
-profile ~/Library/ColorSync/Profiles/DCRAWGamma1ProPhoto.icc\
                 
"/tmp/$name.mpc"

        
else
                
nice -n 16 dcraw -c -n $noisethold -h -4 -w -H 2 -o 4 "$i" |\
                 
nice -n 16 convert - $rotcommand\
                 
-profile ~/Library/ColorSync/Profiles/DCRAWGamma1ProPhoto.icc\
                 
"/tmp/$name.mpc"
        
fi


        
# Apply local contrast.
        
# We use Imagemagick's unsharp option
        
# We switch temporarily to a Gamma 2.2 Profile
        
# which is closer to human eye response
        
# Sigma is around 50 for a 10 megapixels picture
        
# For speed reasons (kernel size), we fix radius to sigma*1.2
        
# (instead of letting Imagemagick determine it itself)
        
# To avoid noise, threshold is equivalent to Photoshop's 2
        
        
sigma=$(echo "e(0.5*l($(identify -format %w*%h "/tmp/$name.mpc")))/65" | bc -q -l)
        
radius=$(echo "scale=0 ; $sigma*1.2/1" | bc -q)
        
nice -n 16 convert  "/tmp/$name.mpc"\
         
-profile ~/Library/ColorSync/Profiles/ProPhoto.icm\
         
-channel RGBA -unsharp "$radius"x$sigma+1+0.0079 \
         
-profile ~/Library/ColorSync/Profiles/DCRAWGamma1ProPhoto.icc\
         
"/tmp/cont-$name.mpc"
        
# equivalent to 20% sharpening 
        
nice -n 16 composite -blend 20 "/tmp/cont-$name.mpc" "/tmp/$name.mpc" "/tmp/$name.mpc" 

        
pivot=$(echo "scale=9 ; $saturation/1983" | bc -q)
        

        
if [ $relight -eq 0 ] ; then
                
nice -n 16 convert "/tmp/$name.mpc" -channel RGBA -resize "160x160>"\
                 
-colorspace HSL -channel Blue -separate\
                 
"/tmp/thumb-$name.mpc"
                
# indication of general contrast
                
stddev=`identify -verbose -colorspace Gray "/tmp/thumb-$name.mpc" |\
                 
grep -i "Standard deviation" | awk '{print $3}'`
                
stddev=$(echo " scale=0 ;  $stddev/100" | bc -q)
                
pivot=$(echo "scale=9 ; $saturation/1983" | bc -q)
        
                
# apply an S-Curve ; intensity is chosen to avoid burning highlights
                
if [ $stddev -le 100 ] ; then
                        
sigma="6x$pivot%"
                
else
                        
sigma="5x$pivot%"
                
fi

                
nice -n 16 convert "/tmp/$name.mpc"\
                 
-sigmoidal-contrast $sigma -contrast-stretch 0.01x99.999%\
                 
"/tmp/mid-$name.mpc"
                 
                
# cleanup
                
rm -f "/tmp/thumb-$name.mpc" "/tmp/thumb-$name.cache"
        
        
else
                
# if user has asked for relighting of dark areas, apply a HDR technique
                
# Peter Gawthrop script at http://wiki.panotools.org/Contrast_Blending


                
nice -n 16 convert "/tmp/$name.mpc"\
                 
-sigmoidal-contrast 8x$pivot% -contrast-stretch 0.01x99.999%\
                 
"/tmp/mid-$name.mpc"
        

                
nice -n 16 convert "/tmp/$name.mpc"\
                 
-sigmoidal-contrast 15x0% -contrast-stretch 0.01x99.999%\
                 
"/tmp/clear-$name.mpc"


                
convert "/tmp/$name.mpc" -type Grayscale "/tmp/mask-$name.mpc"
                
composite  -compose CopyOpacity "/tmp/mask-$name.mpc" "/tmp/$name.mpc"  "/tmp/under_masked-$name.mpc"

                
composite  -compose Darken "/tmp/under_masked-$name.mpc" "/tmp/mid-$name.mpc" "/tmp/composite-$name.mpc"

                
convert "/tmp/clear-$name.mpc" -negate -type Grayscale "/tmp/mask-$name.mpc"
                
composite -compose CopyOpacity "/tmp/mask-$name.mpc" "/tmp/clear-$name.mpc" "/tmp/over_masked-$name.mpc"
                
composite -compose Lighten "/tmp/over_masked-$name.mpc" "/tmp/composite-$name.mpc" "/tmp/mid-$name.mpc"

                
# cleanup
                
rm -f "/tmp/clear-$name.mpc" "/tmp/clear-$name.cache"\
                
"/tmp/mask-$name.mpc" "/tmp/mask-$name.cache"\
                
"/tmp/under_masked-$name.mpc" "/tmp/under_masked-$name.cache"\
                
"/tmp/composite-$name.mpc" "/tmp/composite-$name.cache"\
                
"/tmp/over_masked-$name.mpc" "/tmp/over_masked-$name.cache"
        
fi
        
        
if [ $hires -eq 1 ] ; then
                
# apply low radius sharpening if noise is reasonable
                
if [ $iso -le $isomaxisharpen ] ; then
                        
# selective ("smart") sharpening
                        
nice -n 16 convert "/tmp/mid-$name.mpc" \
                         \
( +clone -channel RGBA -unsharp 0x1+2+0 \) \
                         \
( -clone 0 -edge 5 -colorspace GRAY -level 20%,95% \
                         
-blur 0x1 -level 10%,95% \) \
                         
-composite "/tmp/mid-$name.mpc"
                        
# general sharpening
                        
nice -n 16 mogrify -channel RGBA -unsharp 0x0.7+0.7+0\
                         
"/tmp/mid-$name.mpc"
                
else
                        
# reduce color noise for dark areas (more for high ISOs)
                        
step=$(echo "scale=9 ; $iso*$noiseunder*saturation/100" | bc -q)
                        
nice -n 16 convert \
                         \
( "/tmp/mid-$name.mpc" -despeckle \)        \
                         \
( -clone 0 -channel RGBA -blur 0x3 \) \
                         \
( +clone -white-threshold $step -negate \) \
                         
-compose Colorize -composite "/tmp/mid-$name.mpc"
                
fi
                
outputdir="hires/"
                
outputextension="png"
                
nice -n 16 convert "/tmp/mid-$name.mpc" "$outputdir$name.$outputextension"
        
else
                
outputdir=""
                
outputextension="jpg"
                
nice -n 16 convert "/tmp/mid-$name.mpc"  -channel RGBA -unsharp 0x0.3+1.5+0\
                 
-profile /System/Library/ColorSync/Profiles/sRGBProfile.icc -quality 95 "$outputdir$name.$outputextension"
        
fi
        
        
# update Exif infos
        
exiftool -Orientation=  -TagsFromFile "$i"\
         
-x Orientation -x ThumbnailImage -x PreviewImage\
         
-Software="$versionscript" "$outputdir$name.$outputextension"
        
convert "$outputdir$name.$outputextension" -resize "160x160>"\
         
-profile /System/Library/ColorSync/Profiles/sRGBProfile.icc\
         
-strip -format JPG -compress JPEG "/tmp/thumb-$name.jpg"
         
exiftool "$outputdir$name.$outputextension" -thumbnailimage'<='"/tmp/thumb-$name.jpg"
        
# correct ISO value if it is not in the standard exif:iso tag
        
exiftool -exif:iso=$iso -if 'not $exif:iso'\
         
"$outputdir$name.$outputextension"
        
rm -f "$outputdir$name.$outputextension"_original
        
# create a MacOS preview
        
sips -i "$outputdir$name.$outputextension"
        
# same change date as our Raw file
        
touch -r "$i" "$outputdir$name.$outputextension"
        
        
rm -f "/tmp/$name.mpc" "/tmp/$name.cache"\
         
"/tmp/cont-$name.mpc" "/tmp/cont-$name.cache"\
         
"/tmp/mid-$name.mpc" "/tmp/mid-$name.cache"\
         
"/tmp/thumb-$name.jpg"
         

        
# move our raw file in 'raws' folder
        
if [ "$dirlastname" != 'raws' ] ; then
                
mv "$i" raws
        
fi

        
# cleanup
        
rm -f cache:-
        
        
done


exit 0

Questions et commentaires également bienvenues.

Dernière mise à jour :
20/7/2008 05:25

Commentaires du blog hébergés par Disqus


Billet classé dans la catégorie : Accueil > Photos > Workflow4

<- Bien au contraire, plein de vie...
Un parfum de pingouin ->

Certains droits protégés par licence Creative Commons , 2008 Barijaona Ramaholimihaso
Réagissez par les liens de commentaires ou par courriel : reactions (arobace) barijaona.com
 Accueil |  Humour | Macintosh | Bidouilles | Sélection | Éditeur