Faire un don ! | | style | statistiques | contactez-nous | plan | lettre d'information

Retourner aux forums || Retourner au forum Programmation.shell

Programmation.shell : imagamagick en pratique : scanner -> gros tiff ...

Posté par Space_e_man () le 10 janvier 2007
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 ^_^

> Lire le message (2 commentaires, moyenne: 1,5).  

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.

ok

Posté par Space_e_man () le 10/01/2007 à 16:54. (lien). Évalué à 2.

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