[Linux App] Icc-Converter GUI - Conversion de photos avec un profil icc
Bonjour,
Beaucoup sous windows utilisent BatchIcc pour convertir leur photos avec un profil de couleur avant impression (notamment chez Photoweb) mais je n'ai rien trouvé de semblable pour Linux.
J'ai donc fait un petit script avec une interface graphique pour les utilisateur de linux afin de convertir par lot de manière simple et graphique.
Ce script utilise zenity et jpegicc (fournit dans le paquet "liblcms-utils" sous ubuntu), en principe BatchIcc utilise les meme lib donc les résultats devrait être similaires (mes quelques tests semble confirmer cela).
Screenshots:
Choix du mode de conversion:
http://img258.imageshack.us/img258/9...conversion.png
Choix de la compensation du point noir:
http://img443.imageshack.us/img443/2452/blackpoint.png
Qualité du JPEG généré:
http://img440.imageshack.us/img440/3359/qualitejpeg.png
Progress Bar:
http://img543.imageshack.us/img543/4449/progreebar.png
Récapitulatif:
http://img130.imageshack.us/img130/6906/infoct.png
Pour le Script que j'ai appelé Icc-Converter.bash le voici (il semble que je n'ai pas la possibilité de l'uploader avec le post). Il suffit de le rendre executable, de le lancer et de se laisser guider :
Code:
#!/bin/bash
# préfixe à ajouter aux photos convertis
conv_prefix="converted"
# Sélection du répertoire source
if SOURCE="`zenity --file-selection --directory --title "Choisissez le répertoire source"`"
then
source_dir="$SOURCE"
if [ ! -d "$source_dir" ]
then
zenity --warning --text "Repertoire source invalide \!"
echo "Répertoire de destination invalide !"
exit
fi
else
zenity --warning --text "Annulation ..."
echo "Annulation ..."
exit
fi
# Sélection du répertoire de destination
if DEST="`zenity --file-selection --directory --title "Choisissez le répertoire de destination"`"
then
dest_dir="$DEST"
if [ ! -d "$dest_dir" ]
then
zenity --warning --text "Répertoire de destination invalide \!"
echo "Répertoire de destination invalide !"
exit
fi
else
zenity --warning --text "Annulation ..."
echo "Annulation ..."
exit
fi
# Sélection du mode de conversion
if CONVMODE="`zenity --entry --title="Mode de conversion" --text="Veuillez le mode de conversion" --entry-text="Perceptif" Colorimetrique Saturation Absolue`"
then
if [ "$CONVMODE" = "Perceptif" ]
then
tflag=0
else
if [ "$CONVMODE" = "Colorimetrique" ]
then
tflag=1
else
if [ "$CONVMODE" = "Saturation" ]
then
tflag=2
else
if [ "$CONVMODE" = "Saturation" ]
then
tflag=3
else
zenity --warning --text "Mode de conversion invalide \!"
echo "Mode de conversion invalide !"
exit
fi
fi
fi
fi
else
zenity --warning --text "Annulation ..."
echo $CONVMODE
echo "Annulation ..."
exit
fi
bcomp_flag="Inactif"
# Choix de la compensation du point noir
if BCOMP="`zenity --title="Options" --list --checklist --column="1/0" --width 370 --column="Desciption" "" "Compensation du point noir (recommandé)"`"
then
echo "$BCOMP"
if [ "$BCOMP" = "" ]
then
bcomp_flag="Inactif"
else
bcomp_flag="Actif"
fi
else
zenity --warning --text "Annulation ..."
echo "Annulation ..."
exit
fi
# Choix de la qualité du jpg converti
if JPG_QUAL="`zenity --scale --title "Choix de la qualité du JPEG" --text "Qualité en %" --max-value=100 --value=98`"
then
echo "Qualité jpeg $JPG_QUAL"
else
zenity --warning --text "Annulation ..."
echo "Annulation ..."
exit
fi
# Sélection du profil icc ou icm
if ICCPATH="`zenity --file-selection --file-filter "*.icm *.icc" --title "Choisissez le profil icc ou icm a utiliser"`"
then
icc_file="$ICCPATH"
if [ ! -f "$icc_file" ]
then
zenity --text-info --title="Profil invalide \!"
echo "Profil invalide !"
exit
else
if [ `echo $icc_file | awk -F"." '{ print $NF }'` == "icc" ]
then
echo "icc file used"
else
if [ `echo $icc_file | awk -F"." '{ print $NF }'` == "icm" ]
then
echo "icm file used"
else
zenity --warning --text "Profil invalide \!"
echo "Profil invalide !"
exit
fi
fi
fi
else
zenity --warning --text "Annulation ..."
echo "Annulation ..."
exit
fi
# Nombre de fichiers à convertir dans le dossier
let nb_photos=`ls -l "$source_dir"/*.JPG | wc -l`+`ls -l "$source_dir"/*.jpg | wc -l`+`ls -l "$source_dir"/*.jpeg | wc -l`
let count=0
{
for i in "$source_dir"/*.JPG "$source_dir"/*.jpg "$source_dir"/*.jpeg
do
# Calcul du pourcentage effectué
let count=$count+1
let p=($count*100)/$nb_photos
# Transmition de l'avancement a zenity
echo "$p"
echo "# Conversion de $i ..."
# Récuperation du nom du fichier sans le path complet
jpg_name=`echo "$i" | awk -F"/" '{ print $NF }'`
# Commande de conversion
if [$bcomp_flag = "Actif"]
then
jpegicc -q"$JPG_QUAL" -o "$icc_file" -t"$tflag" -b "$i" "$dest_dir"/"$conv_prefix"_"$jpg_name"
else
jpegicc -q"$JPG_QUAL" -o "$icc_file" -t"$tflag" "$i" "$dest_dir"/"$conv_prefix"_"$jpg_name"
fi
done
} | zenity --progress --title="Conversion des photos ..." --text="En cours..." --auto-kill --auto-close
zenity --info --text="Conversion effectuée !
--------------
Fichier convertis dans :
$dest_dir
--------------
Mode utilisé :
$CONVMODE
--------------
Compensation du point noir :
$bcomp_flag
--------------
Qualité JPEG :
"$JPG_QUAL"%
--------------
Profil utilisé :
$icc_file"
Voila j'espère que certains trouverons ça utile, n'hésitez pas à me reporter les bugs ou a proposer des modif. Si certains le souhaitent je peux ajouter le support de imagemagic qui est lui aussi capable de réaliser ce type de conversion.