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 18/07/2021, à 10:31

lagelat81

Imagemagick "convert-im6.q16: unable to open image `*.png' (Résolu)

Bonjour.
A la commande

convert home/mon_home/Images/*.png *.jpg

J'obtiens

convert-im6.q16: unable to open image `home/mon_home/Images/*.png': Aucun fichier ou dossier de ce type @ error/blob.c/OpenBlob/2874.
convert-im6.q16: no images defined `*.jpg' @ error/convert.c/ConvertImageCommand/3258.

Alors qu'il y une image.png dans le repertoire....
Vous auriez une idée?

Dernière modification par lagelat81 (Le 20/07/2021, à 14:04)

Hors ligne

#2 Le 18/07/2021, à 10:50

abelthorne

Re : Imagemagick "convert-im6.q16: unable to open image `*.png' (Résolu)

Si je ne m'abuse, convert ne fonctionne pas en batch. C'est à dire que là, tu lui demandes de traiter un fichier qui s'appelle "*.png", la commande n'interprète pas le joker pour dire "tous les fichiers qui finissent pas .png".

Il faudrait soit faire un script bash un peu plus évolué avec une boucle for, soit passer par mogrify (qui fait partie d'ImageMagick) :

mogrify -format jpg *.png

Il va prendre tous les .png en entrée et les réécrire au format jpg. Je te laisse voir dans le man ou la doc en ligne pour les options supplémentaires si tu as besoin de spécifier par exemple la qualité jpg.

Attention à mogrify si tu l'utilises pour d'autres opérations, parce qu'il modifie l'image d'origine − sauf en cas de changement de format comme dans l'exemple ci-dessus −, il ne peut pas créer une nouvelle image contrairement à convert.

Il y a aussi des softs graphiques qui permettent de convertir des images à divers formats et d'appliquer des opérations basiques en batch, par exemple gThumb.

Dernière modification par abelthorne (Le 18/07/2021, à 10:53)

Hors ligne

#3 Le 18/07/2021, à 11:00

lagelat81

Re : Imagemagick "convert-im6.q16: unable to open image `*.png' (Résolu)

Idem avec mogrify.

mogrify  home/mon_home/Images/*.png *.jpg
mogrify-im6.q16: unable to open image `home/mon_home/Images/*.png': Aucun fichier ou dossier de ce type @ error/blob.c/OpenBlob/2874.
mogrify-im6.q16: unable to open image `*.jpg': Aucun fichier ou dossier de ce type @ error/blob.c/OpenBlob/2874.
mogrify-im6.q16: unable to open image `*.jpg': Aucun fichier ou dossier de ce type @ error/blob.c/OpenBlob/2874.

Une fois dans le repertoire,

mogrify -format jpg *.png

J'obtiens:

mogrify-im6.q16: unable to open image `*.jpg': Aucun fichier ou dossier de ce type @ error/blob.c/OpenBlob/2874.

J'ai aussi essayé en mettant le chemin+nom du fichier à modifier et j'obtiens la même erreur.

Hors ligne

#4 Le 18/07/2021, à 11:05

lagelat81

Re : Imagemagick "convert-im6.q16: unable to open image `*.png' (Résolu)

En fait je veux me servir d'imagemagick en ligne de commande pour surveiller mon dossier Images, redimensionner une capture d'ecran dès qu'elle est crée  et l'enregistrer sur une clé USB.
Le reste du script fonctionne excepté l'utilisation d'imagemagick.

Dernière modification par lagelat81 (Le 19/07/2021, à 08:23)

Hors ligne

#5 Le 18/07/2021, à 11:10

abelthorne

Re : Imagemagick "convert-im6.q16: unable to open image `*.png' (Résolu)

Attention à la syntaxe : avec la première que tu as essayée, ça ne marchera pas, mogrify ne prend qu'un fichier en entrée, il ne fonctionne pas comme convert. La syntaxe suivante :

mogrify -format jpg *.png

va prendre en entrée tous les fichiers en .png (*.png) et les convertir en jpg (-format jpg).

Je viens de faire un test de mon côté, ça fonctionne. Vu qu'il te dit qu'il ne trouve pas d'image "*.jpg", je pense que tu as inversé les deux extensions, tu lui as fourni *.jpg en entrée au lieu de *.png et tu n'as pas de fichiers en .jpg à convertir.

Bien sûr, je ne l'ai pas précisé mais il va traiter les images qui sont dans le dossier courant si tu ne lui indiques pas de chemin. il faut soit que tu te places d'abord dans le dossier où il y a les images, soit que tu indiques le chemin. Càd soit :

cd ~/Images
mogrify -format jpg *.png

soit :

mogrify -format jpg ~/Images/*.png

EDIT : concernant le redimensionnement, tu peux le faire avec une commande mogrify aussi (cf la doc en ligne que j'ai mise) mais il va redimensionner l'image source, pas une copie. Si tu veux garder l'image d'origine, il va falloir plutôt faire un script bash qui traite les images une par une avec convert via une boucle.

Dernière modification par abelthorne (Le 18/07/2021, à 12:49)

Hors ligne

#6 Le 19/07/2021, à 08:21

lagelat81

Re : Imagemagick "convert-im6.q16: unable to open image `*.png' (Résolu)

En fait j'ai pas besoin de traitement par lots. Inotify me renvoie le chemin de la capture d'écran dès qu'elle est effectuée.
Je dois surement faire une erreur de syntaxe (je suis débutant en script).
Pourquoi la commande suivante me renvoie une erreur?

convert home/mon_home/Images/Capture%20d%E2%80%99%C3%A9cran%20de%202021-07-18%2009-25-09.png new.jpg
convert-im6.q16: unable to open image `home/mon_home/Images/Capture%20d%E2%80%99%C3%A9cran%20de%202021-07-18%2009-25-09.png': Aucun fichier ou dossier de ce type @ error/blob.c/OpenBlob/2874.
convert-im6.q16: no images defined `new.jpg' @ error/convert.c/ConvertImageCommand/3258.

home/mon_home/Images/Capture%20d%E2%80%99%C3%A9cran%20de%202021-07-18%2009-25-09.png est bien le chemin de l'image à modifier et elle est présente.

Dernière modification par lagelat81 (Le 19/07/2021, à 08:21)

Hors ligne

#7 Le 19/07/2021, à 08:45

abelthorne

Re : Imagemagick "convert-im6.q16: unable to open image `*.png' (Résolu)

Ben déjà, il manque le slash au tout début : là, il cherche un dossier home dans le dossier courant et pas à partir de la racine (/home). Ensuite, c'est possible que certains caractères spéciaux dans le nom nécessitent d'être "protégés" (pour indiquer qu'ils font partie du nom de fichier et ne doivent pas être inteprétés) ; je pense notamment aux % mais je n'en suis pas complètement sûr. Dans le doute, mets le chemin complet de ton fichier entre guillemets.

Hors ligne

#8 Le 19/07/2021, à 08:45

lagelat81

Re : Imagemagick "convert-im6.q16: unable to open image `*.png' (Résolu)

Bon il semblerai que ce soit le nom du fichier soit trop long ou avec des espaces qui ne convienne pas. Si je renomme le fichier pas de problème. Je vais rajouter cette opération dans mon script.

Hors ligne

#9 Le 19/07/2021, à 09:01

abelthorne

Re : Imagemagick "convert-im6.q16: unable to open image `*.png' (Résolu)

Tu as essayé de mettre tout le chemin entre guillemets au cas où le problème vienne des % qui sont dedans ? Ou de mettre un \ devant chacun d'entre eux mais c'est moins pratique.

Hors ligne

#10 Le 19/07/2021, à 10:31

lagelat81

Re : Imagemagick "convert-im6.q16: unable to open image `*.png' (Résolu)

Comme ça? idem:

$ convert "/home/mon_home/Images/Capture%20d%E2%80%99%C3%A9cran%20de%202021-07-19%2009-48-32.png" new.jpg
convert-im6.q16hdri: unable to open image `/home/mon_home/Images/Capture%20d%E2%80%99%C3%A9cran%20de%202021-07-19%2009-48-32.png': Aucun fichier ou dossier de ce type @ error/blob.c/OpenBlob/2874.
convert-im6.q16hdri: no images defined `new.jpg' @ error/convert.c/ConvertImageCommand/3258.

Hors ligne

#11 Le 19/07/2021, à 10:33

abelthorne

Re : Imagemagick "convert-im6.q16: unable to open image `*.png' (Résolu)

Oui, c'est ça. Et donc, dans le dossier Images, tu as bien le fichier en question ?

ls ~/Images

Hors ligne

#12 Le 19/07/2021, à 10:50

lagelat81

Re : Imagemagick "convert-im6.q16: unable to open image `*.png' (Résolu)

Alors, si je mets ce chemin:

convert "/home/mon_home/Images/Capture d’écran de 2021-07-19 09-48-32.png" new.jpg

ça fonctionne.
Si je mets

convert "/home/mon_home/Images/Capture%20d%E2%80%99%C3%A9cran%20de%202021-07-19%2009-48-32.png" new.jpg

ça fonctionne pas.
Le problème est que inotify me renvoie le chemin sous cette forme (Capture%20d%E2%80%99%C3%A9cran%20de%202021-07-19%2009-48-32.png)

Dernière modification par lagelat81 (Le 20/07/2021, à 14:10)

Hors ligne

#13 Le 19/07/2021, à 11:05

abelthorne

Re : Imagemagick "convert-im6.q16: unable to open image `*.png' (Résolu)

Ok. Les codes sur trois caractères qui commencent par % correspondent à un encodage qui est généralement utilisé sur le web. Peut-être que convert ne sait pas les interpréter à la volée.

A priori, on doit pouvoir les convertir avec recode si tu veux creuser dans cette direction pour ton script, sachant que le chemin converti devra être entre guillemets à cause des espaces, à moins que ce soit possible de rajouter automatiquement des antislashes mais on sort de mes compétences.

Hors ligne

#14 Le 19/07/2021, à 11:43

lagelat81

Re : Imagemagick "convert-im6.q16: unable to open image `*.png' (Résolu)

Bon c'est très étrange, inotify ne renvoie plus ces caractères %20....

Voici mon script:

#!/usr/bin/env bash

inotifywait -m /home/mon_home/Images -e create |
    while read path action file; do
        echo "The file '$file' appeared in directory '$path'"
        cd /home/mon_home/Images
        convert "$file"  new.jpg
    done

Et ce que j'obtiens qd je le lance et que j'effecue une capture d'écran.

moi@ThinkPad-T14s:~/Bureau$ bash Script_Redim
Setting up watches.
Watches established.
The file 'Capture d’écran de 2021-07-19 12-35-29.png' appeared in directory '/home/mon_home/Images/'
convert-im6.q16hdri: improper image header `Capture d’écran de 2021-07-19 12-35-29.png' @ error/png.c/ReadPNGImage/4092.
convert-im6.q16hdri: no images defined `new.jpg' @ error/convert.c/ConvertImageCommand/3258.

J'ai essayé d'enlever les guillemets, de mettre des apostrophes mais sans succès...

Dernière modification par lagelat81 (Le 20/07/2021, à 14:12)

Hors ligne

#15 Le 19/07/2021, à 11:56

abelthorne

Re : Imagemagick "convert-im6.q16: unable to open image `*.png' (Résolu)

Là, c'est un problème différent : il ne dit plus qu'il ne trouve pas le fichier, il indique que l'entête PNG est malformé (improper image header), que ce n'est pas un fichier PNG valide. Tu peux ouvrir le fichier avec une visionneuse, avec GIMP... ? Il ne ferait pas 0 octet par hasard ?

Hors ligne

#16 Le 20/07/2021, à 10:08

lagelat81

Re : Imagemagick "convert-im6.q16: unable to open image `*.png' (Résolu)

Oui j'ouvre le fichier sans problème avec la visionneuse....

Hors ligne

#17 Le 20/07/2021, à 10:19

abelthorne

Re : Imagemagick "convert-im6.q16: unable to open image `*.png' (Résolu)

Avec GIMP, tu peux l'ouvrir sans problème (pas de mention d'une erreur au niveau de l'entête) ?
Si tu le réenregistres en PNG depuis GIMP, est-ce que convert fonctionne sur la nouvelle version du fichier ?

En faisant une recherche Google sur "imagemagick improper image header", on trouve pas mal de messages. Il faudrait creuser pour voir s'il y a des cas qui pourraient correspondre au tien.

Une hypothèse pourrait être que ta commande convert se lance dès que le fichier apparaît dans le dossier mais avant qu'il ait été complètement écrit, auquel cas convert se lancerait sur un fichier incomplet/invalide alors que si tu le vérifies après il est bon. Essaie au cas où d'ajouter un petit délai avant ta commande convert, quelque chose comme sleep 1 pour faire une pause d'une seconde.

Dernière modification par abelthorne (Le 20/07/2021, à 10:20)

Hors ligne

#18 Le 20/07/2021, à 10:36

lagelat81

Re : Imagemagick "convert-im6.q16: unable to open image `*.png' (Résolu)

Merci abelthorne un petit delay et tout est rentré dans l'ordre.

Dernière modification par lagelat81 (Le 20/07/2021, à 14:08)

Hors ligne

#19 Le 20/07/2021, à 14:03

lagelat81

Re : Imagemagick "convert-im6.q16: unable to open image `*.png' (Résolu)

Voici mon script qui attend que je fasse une capture d'écran avec curseur et qui lorsqu'elle est faite, redimensionne l'image sans la déformer au dimensions max (largeur ou hauteur) d'un écran portable et l'envoie dans une clé USB:

#!/usr/bin/env bash

inotifywait -m /home/mon_home/Images -e create |
    while read path action file; do
        echo "The file '$file' appeared in directory '$path'"
        cd /home/mon_home/Images
        sleep 1 #Permet d'attendre que le header soit crée.
        convert "$file" -resize 1440x900   /media/mon_home/cleUSB/"$file"
    done

Merci abelthorne pour le temps passé à me répondre.

Hors ligne