Retourner aux forums || Retourner au forum Programmation.shell
Programmation.shell : imagamagick en pratique : scanner -> gros tiff ...
Posté par Space_e_man () le 10 janvier 2007Au 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 ^_^
> Lire le message (2 commentaires, moyenne: 1,5).
ok
ici, bientôt les fruits de mes recherches... J'ai trouvé des solutions, notemment avec libtiff-tools et son tiffsplit ^_^
-
[^]Re: ok
Posté par Space_e_man () le 26/01/2007 à 14:08. (lien). Évalué à 1.#!/bin/bash
# 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
Revenir en haut de page || Retourner aux forums || Retourner au forum Programmation.shell



Cette discussion est archivée, il n'est plus possible de laisser des commentaires.
Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.