Salut,
Au boulot, une multifonction produit de gros fichiers tif avec parfois plusieurs pages dedans, sous forme de calques (me semble-t-il). Ces fichiers arrivent via ftp dans un dossier partagé sur une machine Linux.
J'aimerais qu'automatiquement, ces images soit converties en un fichier png par page (par calque). Si au passage, chaqu'un de ces fichier png pouvait être "optimisé" pour prendre le moins de place possible (pas de canal alpha, espace de couleur respecté)
J'ai trouvé imagamagick, mais je comprend pas tout :/
Par exemple :
- je trouve pas comment séparer les calque du tif en plusieurs fichiers.
- convert par d'une image tif noir et blanc et me sort un png en rgb (trois fois plus gros donc... Comment éviter cela et respecter l'espace de couleur d'origine, sachant que les tif peuvent être de différents à ce niveau.
Y a-t-il un wiki ou forum à propos de imagemagick, avec de l'expérience etc. ?
Merci d'avance ^_^
# ok
Posté par Space_e_man (site web personnel) . Évalué à 2.
[^] # Re: ok
Posté par Space_e_man (site web personnel) . Évalué à 1.
# filename
is_a_ricoh_file ()
{
Filename=$1
Ricoh_filename_length=21
Ricoh_filename_digits=17
Length=${#Filename}
# Length=`expr length "$Filename"`
Digits=`expr "$Filename" : '[0-9]*'`
if [ $Length -eq $Ricoh_filename_length ] \
&& [ $Digits -eq $Ricoh_filename_digits ]
then
return 1
fi
return 0
}
# filename
split_tiff_pages ()
{
Filename=$1
}
new_files ()
{
Incoming_folder="/donnees/scanner/ricoh"
Temp_folder="/donnees/scanner/temp"
Shared_folder="/donnees/scanner/partage"
[ -d "$Incoming_folder" ] || return -4
[ -d "$Temp_folder" ] || return -4
[ -d "$Shared_folder" ] || mkdir -p "$Shared_folder"
if ls "$Incoming_folder/"* &>/dev/null ; then
echo '---------------------------------------------------'
echo 'Splitting now...'
cd "$Incoming_folder"
for Filename in *.tif
do
is_a_ricoh_file "$Filename"
if [ $? -eq 1 ] ; then
Racine="$Temp_folder/${Filename:0:4}-${Filename:4:2}-${Filename:6:2} ${Filename:8:2}h${Filename:10:2}-${Filename:12:2} page "
if ! ls "$Racine"* &>/dev/null ; then
# echo $Racine
sleep 10s
echo 'tiffsplit "'$Filename'" "'$Racine'"'
tiffsplit "$Filename" "$Racine"
rm "$Filename"
fi
fi
done
fi
if ls "$Temp_folder/"* &>/dev/null ; then
echo 'Convert now...'
cd $Temp_folder
for Filename in *.tif
do
# echo "$Filename -> $Png_filename"
# Colorspace=`identify -format "%r" $Filename`
# Depth=`identify -format "%z" $Filename`
RGBA_filename="${Filename%.tif}_RGBA.tif"
echo 'tiff2rgba "'$Filename'" "'$RGBA_filename'"'
tiff2rgba "$Filename" "$RGBA_filename"
rm "$Filename" &
Png_filename="${Filename%.tif}.png"
echo 'convert -quality 100 "'$RGBA_filename'" "'$Png_filename'"'
convert -quality 100 "$RGBA_filename" "$Png_filename"
Jpg_filename="${Filename%.tif}.jpg"
echo 'convert -resample 150x150 -normalize -quality 60 "'$RGBA_filename'" "'$Jpg_filename'"'
# when possible, replace -normalize by -contrast-stretch 5%
convert -resample 150x150 -normalize -quality 60 "$RGBA_filename" "$Jpg_filename"
rm "$RGBA_filename" &
Shared_png_filename="$Shared_folder/$Png_filename"
Shared_jpg_filename="$Shared_folder/$Jpg_filename"
mv "$Png_filename" "$Shared_png_filename"
mv "$Jpg_filename" "$Shared_jpg_filename"
chown professeur:professeur "$Shared_jpg_filename"
chown professeur:professeur "$Shared_png_filename"
echo 'Moved to shared folder'
done
fi
}
while true
do
new_files
sleep 1s
done
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.