Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 17/03/2008, à 00:31

Waloche

script fu et les png-8

Bonjour à tous,

Voila plusieurs jours que j'essaye de comprendre script fu pour obtenir le résultat que je veux... malheureusement, bien que j'ai compris certaines chose, je n'arrive pas à faire mon script correctement.

Je m'explique; je travaille sur une série de 5000 images png-8 bits (64 x 64) et j'ai besoin de différencier  celle qui ont un vert pure (0,255,0) en index 0 des autres... Donc en gros il faudrait que mon script ouvre l'image lise la valeur de l'index 0 et si elle ne contient pas un index 0 vert, retourne son nom ou un message ...

Est ce que quelqu'un pourrait m'expliquer comment faire?

Merci d'avance

#2 Le 17/03/2008, à 02:56

Alain.g

Re : script fu et les png-8

Salut

Pourquoi ne pas le faire plutôt en Bash. Je ne vois pas trop l'intérêt de passer par Gimp pour ça hmm

A priori j'utiliserais imagemagick et son programme identify, avec grep pour tester si l'index 0 est vert ou non

identify -verbose img.png | grep -q ' 0: *( *0, *255, *0)'  ||  echo "index 0 n'est pas vert"

Ceci dit il existe plein d'outils pour les PNG, il y a sûrement plus approprié et rapide que de passer par "identify -verbose".

Si tu as 5000 images, j'imagine l'opération doit être récursive (dossiers +sous dossiers).
Il est possible d'utiliser pour cela la commande find

Si ça fonctionne comme voulu avec identify, voici un exemple dans un script Bash

#!/bin/bash

dossier=("$HOME/images/png")

IFS=$'\n'
img=(`find "${dossier[@]}" -iname '*.png'`)
t=${#img[@]}

for i in "${img[@]}"
do
	((n++)) ; progress=$(echo "scale=2;$n*100/$t" | bc)
	printf "Progression de l'analyse : $progress %% ($n/$t)\r"
	identify -verbose "$i" | grep -q ' 0: *( *0, *255, *0)' || result+="$i\n"
done

printf "\nPNG n'ayant pas un index 0 vert :\n\n$result\n"

S'utilise en console. Il faut avoir installé imagemagick.

Indiquer le chemin du dossier à la place de "$HOME/images/png". il est possible d'en indiquer plusieurs, par exemple : dossier=("$HOME/images/png" "/tmp" "$HOME/dossier/truc")

Pour avoir le résultat dans un fichier texte, ajouter ">fichier.txt" à la fin de la dernière ligne.

Dernière modification par Alain.g (Le 02/04/2008, à 15:00)


Xubuntu Karmic !

Hors ligne

#3 Le 17/03/2008, à 23:07

Waloche

Re : script fu et les png-8

big_smile Merci Monsieur, je teste de suite!