Forum Programmation.shell test si un fichier image est ouvrable

Posté par  .
Étiquettes : aucune
2
28
sept.
2012

Bonjour,
on est vendredi 12h, j'ai faim, et je dois pondre un script mais le cerveau ne veut pas,
alors j'en appelle à la force de la communauté.

La situation :
- soit un ensemble d'images deposées dans une arborescence (pour l'instant 4500images)
- soit une personne qui n'arrivent pas ouvrir certaines de ces images qu'elle doit recuperer.
le transfert se fait bien (ftp, cle usb ou email), le fichier a la bonne taille sur les deux machines

Le probleme :
peut-on faire un script qui tente d'ouvrir l'image et me renvoie 1 ou 0 selon qu'il a pu l'ouvrir ou pas ?

pour se simplifier la vie, je peux mettre toutes les images dans le meme dossier, le parcours d'une arborescence de fichier n'etant pas un probleme.

j'ai deja eu des cas ou imagemagick ne pouvait pas convertir une image car les données dedans etaient erronée, mais ou d'autres outils y parvenaient (ne tenant peut-etre pas compte de ces données).

si vous avez une piste, je suis preneur.

  • # identify

    Posté par  . Évalué à 6.

    Faire un test avec la commande identify d'imagemagick et traiter le retour ?

    Si l'image est problématique, identify renverra sûrement une erreur.

    par exemple, sur une image corrompue par mes soins

    identify xam.png
    identify: En-tête d'image incorrect `xam.png' @ error/png.c/ReadPNGImage/3644.

  • # feh -U

    Posté par  (site web personnel) . Évalué à 10. Dernière modification le 28 septembre 2012 à 12:39.

    feh avec l'option -U liste les images qu'il sait ouvrir et avec l'option -u ce qu'il ne sait pas ouvrir…

    -U, --loadable
                 Don't display images.  Just print out their names if imlib2 can
                 successfully load them.
    ...
    -u, --unloadable
                 Don't display images.  Just print out their names if imlib2 can
                 NOT successfully load them.
    
    
  • # proposition

    Posté par  . Évalué à 5.

    find /chemin/xxx -print 0 | while read f; do monappli -param 1 -param 2 "$f" || echo "Erreur à l'ouverture de $f"; done
    
    

    Ou alors je n'ai pas compris la question. C'est une réelle possibilité.

  • # Passe ton utilisateur sous GNU/Linux

    Posté par  (site web personnel) . Évalué à 1.

    Je suis sûr qu'il utilise Fenêtres©.
    Je me trompe ? (ça va, on est trolldi quand même ;-))

    Sinon, ouais, feh (commentaire précédent), je pense que c'est la bonne solution.

    Being a sysadmin is easy. As easy as riding a bicycle. Except the bicycle is on fire, you’re on fire and you’re in Hell.

    • [^] # Re: Passe ton utilisateur sous GNU/Linux

      Posté par  . Évalué à 2.

      bien tenté
      mais parfois l'image s'ouvre tres bien avec Fenentres et pas avec Linux
      parfois dans aucun des deux
      parfois convert veut bien en faire quelque chose mais evince ne veut pas l'ouvrir, etc.

      • [^] # Re: Passe ton utilisateur sous GNU/Linux

        Posté par  . Évalué à 2. Dernière modification le 28 septembre 2012 à 16:25.

        Avec quel logiciel il tente d'ouvrir l'image ?

        Quel est (quels sont) le(s) format(s) des images ?

        En fait tu as plusieurs utilisateurs utilisant différents logiciels qui rencontrent le problème, pas forcément sur la même image ?

        • [^] # Re: Passe ton utilisateur sous GNU/Linux

          Posté par  . Évalué à 2.

          En fait tu as plusieurs utilisateurs utilisant différents logiciels qui rencontrent le problème, pas forcément sur la même image ?

          oui c'est un peu ca.
          0°) les images sont issues d'un scanner ou d'un fax vers fichier, ce sont aussi bien des Tiff, Jpg ou Png
          1°) j'ai des utilisateurs qui prennent ces images pour les retravailler
          2°) on envoie ensuite ces images à des clients

          helas parfois à l'etape 1 ou 2 les utilisateurs ne peuvent pas ouvrir une image
          je fais alors un essai classique avec mon linux,
          xdg-open chemin/image
          evince chemin/image
          puis convert chemin/image /tmp/test.jpg (ou png, tiff)

          parfois ca plante partout, parfois ca ne plante nulle part, parfois ca plante sur certaines ouvertures.

          le probleme c'est que les clients me refuse les livraisons de lots d'images s'ils tombent sur une erreur parmi le lot.

          donc je voudrais controler toutes les images avant traitement (entre 0 et 1)
          puis avant livraison (entre 1 et 2)

          • [^] # Re: Passe ton utilisateur sous GNU/Linux

            Posté par  . Évalué à 4.

            Pas facile ton problème en effet :(

            Quelques idées et questions :

            Je suppose qu'un problème qui surgirait entre l'étape 0 et l'étape 1 ne peut pas arriver à l'étape 2. Si tes utilisateurs ne peuvent pas l'ouvrir ils ne vont pas les intégrer au lot pour le client. À moins qu'ils n'ouvrent pas certaines images et les intègrent directement ? Il font quoi tes utilisateurs si ça ne s'ouvre pas à l'étape 1 ?

            Quand les images sont retravaillées, elles sont sauvegardées dans le format d'origine ou bien tu as un seul format pour l'étape 2 ? Ça serait bien d'avoir un seul format.

            helas parfois à l'etape 1 ou 2 les utilisateurs ne peuvent pas ouvrir une image

            À l'étape 2 c'est bien les clients (pas tes utilisateurs) qui ne peuvent pas ouvrir certains fichiers c'est ça ?

            Un problème que je vois c'est que visiblement tes utilisateurs utilisent des logiciels différents, la solution avec feh ne fonctionnera que pour les logiciel basée sur la même bibliothèque. La solution à base de find (si elle fonctionne) te permet par contre de tester plusieurs logiciels. Si certains logiciels utilisés ne tournent que sous Windows, tu peux peut-être utiliser find (et bash) sous Windows, par exemple avec Cygwin.

            le probleme c'est que les clients me refuse les livraisons de lots d'images s'ils tombent sur une erreur parmi le lot.

            donc je voudrais controler toutes les images avant traitement (entre 0 et 1)
            puis avant livraison (entre 1 et 2)

            C'est surtout entre 1 et 2 que le problème a le plus d'impact, non ?

            As-tu remarqué que le problème se produisait plus sur tel ou tel format de fichier ? Est-ce que tu peux éventuellement affiner ton workflow, en imposant par exemple un format pour les scans ou l'utilisation d'un ou deux logiciel pour la retouche ? Je suppose que non.

            Voilà, c'est juste quelques idées, je ne suis pas spécialiste. Bon courage.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.