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 19/01/2020, à 16:19

Akatu

Détecter les fichiers JPEG ayant PNG comme extension et les convertir

Bonjour,

Je télécharge des icônes depuis le web en forçant l'extension en .PNG. Cela est juste dans 95% des cas mais pour certaines icônes, ce sont des .JPEG.
Du coup, mon éditeur d'images n'arrivent pas à les ouvrir.

En utilisant la commande identify, voilà ce que j'obtiens sur un exemple :

identify icone_test.png 
icone_test.png JPEG 512x512 512x512+0+0 8-bit sRGB 14.1KB 0.000u 0:00.000

Je dois donc changer l'extension de png à jpeg pour pouvoir ouvrir cette icône dans mon éditeur.

Je chercher à détecter les 5% d'icônes que je dois convertir en .JPEG et si possible, stocker le nom de ces icônes dans un fichier et si possible (encore mieux) changer directement l'extension.

Vu le résultat que renvoie identify, j'imagine que c'est possible non ?
Merci !


KDE neon User Edition
LENOVO Ideapad L340-15IRH
Intel(R) Core(TM) i5-9300H CPU @ 2.40GHz (8 coeurs)
512 Go SSD - (M.2 2280) PCIe 3.0 x4 - NVM Express (NVMe)

Hors ligne

#2 Le 19/01/2020, à 16:29

Watael

Re : Détecter les fichiers JPEG ayant PNG comme extension et les convertir

salut,

en forçant l'extension en .PNG

pourquoi ? comment ?

#!/bin/bash

shopt -s nocasematch
for img in tonRep/*.png; [[ $(file -b --mime-type "$img") == *jpeg ]] && echo convert "$img" "${img%.*}.jpeg"; done

si c'est correct, enlève le echo.


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#3 Le 19/01/2020, à 16:45

Akatu

Re : Détecter les fichiers JPEG ayant PNG comme extension et les convertir

Car les icônes sont téléchargées via un script et il n'y a le choix que d'une extension.

Pour être plus précis, je me base sur ceci pour télécharger les icônes d'applications Android depuis Google Play : https://github.com/facundoolano/google-play-scraper
Ensuite, j'ai un fichier getPic.js qui contient ceci ;

let gplay = require('google-play-scraper');
let https = require('https');
let fs = require('fs');
let appIdArray = ['nom_de_paquet'];

for(let i = 0; i < appIdArray.length ; i++ ){
    gplay.app({appId: appIdArray[i]})
  .then(function(res){
    console.log(res);
     let file = fs.createWriteStream(res.appId + ".png"); 
     let request = https.get(res.icon, function(response) {
  response.pipe(file);
});
  }).catch(function(err){
    console.error(err);
    });
}

J'ai mis ton code dans un fichier .sh (puis chmod +x dessus) et j'obtiens ça après exécution :

./test.sh 
./test.sh: line 4: syntax error near unexpected token `[['
./test.sh: line 4: `for img in tonRep/*.png; [[ $(file -b --mime-type "$img") == *jpeg ]] && echo convert "$img" "${img%.*}.jpeg"; done '

Dernière modification par Akatu (Le 19/01/2020, à 16:47)


KDE neon User Edition
LENOVO Ideapad L340-15IRH
Intel(R) Core(TM) i5-9300H CPU @ 2.40GHz (8 coeurs)
512 Go SSD - (M.2 2280) PCIe 3.0 x4 - NVM Express (NVMe)

Hors ligne

#4 Le 19/01/2020, à 17:00

Watael

Re : Détecter les fichiers JPEG ayant PNG comme extension et les convertir

les erreurs sont dues à l'emploi de /bin/sh au lieu de /bin/bash.


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#5 Le 19/01/2020, à 17:06

Akatu

Re : Détecter les fichiers JPEG ayant PNG comme extension et les convertir

Désolé mais là tu m'as perdu :-) C'est pas aussi limpide que toi.


KDE neon User Edition
LENOVO Ideapad L340-15IRH
Intel(R) Core(TM) i5-9300H CPU @ 2.40GHz (8 coeurs)
512 Go SSD - (M.2 2280) PCIe 3.0 x4 - NVM Express (NVMe)

Hors ligne

#6 Le 19/01/2020, à 17:21

Watael

Re : Détecter les fichiers JPEG ayant PNG comme extension et les convertir

affiche-nous le script que tu utilises, et montre-nous la manière dont tu l'exécute, stp.

/bin/sh n'est pas toujours un lien vers /bin/bash.
or, [[ est une commande qui n'est accessible qu'à partir de /bin/bash.
mais il est étrange que tu n'aies pas d'erreurs concernant la commande shopt.


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#7 Le 19/01/2020, à 17:27

Akatu

Re : Détecter les fichiers JPEG ayant PNG comme extension et les convertir

OK, voici une capture de Dolphin et une pour le script (copier/coller de ton post) :
1579450660.png

1579450610.png


KDE neon User Edition
LENOVO Ideapad L340-15IRH
Intel(R) Core(TM) i5-9300H CPU @ 2.40GHz (8 coeurs)
512 Go SSD - (M.2 2280) PCIe 3.0 x4 - NVM Express (NVMe)

Hors ligne

#8 Le 19/01/2020, à 17:49

Watael

Re : Détecter les fichiers JPEG ayant PNG comme extension et les convertir

ah! c'est moi : j'ai oublié un do.

for img in tonRep/**.png; do ...; done

Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#9 Le 19/01/2020, à 17:57

Akatu

Re : Détecter les fichiers JPEG ayant PNG comme extension et les convertir

Plus d'erreur, j'obtiens :

convert /home/arnaud/PartageVM/TEMP/test/arcaicoms_netcut.png /home/arnaud/PartageVM/TEMP/test/arcaicoms_netcut.jpeg

arcaicoms_netcut.png est effectivement un JPEG. Malheureusement, l'extension reste .PNG.


KDE neon User Edition
LENOVO Ideapad L340-15IRH
Intel(R) Core(TM) i5-9300H CPU @ 2.40GHz (8 coeurs)
512 Go SSD - (M.2 2280) PCIe 3.0 x4 - NVM Express (NVMe)

Hors ligne

#10 Le 19/01/2020, à 17:59

Watael

Re : Détecter les fichiers JPEG ayant PNG comme extension et les convertir

la conversion n'est pas réalisée si tu laisses le echo.


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#11 Le 19/01/2020, à 18:03

Akatu

Re : Détecter les fichiers JPEG ayant PNG comme extension et les convertir

OK, top merci !
Dernière chose, actuellement, le script crée un nouveau fichier. Est-il possible de supprimer la version PNG ou de renommer l'existant ?


KDE neon User Edition
LENOVO Ideapad L340-15IRH
Intel(R) Core(TM) i5-9300H CPU @ 2.40GHz (8 coeurs)
512 Go SSD - (M.2 2280) PCIe 3.0 x4 - NVM Express (NVMe)

Hors ligne

#12 Le 19/01/2020, à 18:08

Watael

Re : Détecter les fichiers JPEG ayant PNG comme extension et les convertir

oui. mv au lieu de cp.


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#13 Le 19/01/2020, à 18:10

Akatu

Re : Détecter les fichiers JPEG ayant PNG comme extension et les convertir

Y'a pas de cp dans ton script...

EDIT : ok, "convert" -> "mv"

Dernière modification par Akatu (Le 19/01/2020, à 18:11)


KDE neon User Edition
LENOVO Ideapad L340-15IRH
Intel(R) Core(TM) i5-9300H CPU @ 2.40GHz (8 coeurs)
512 Go SSD - (M.2 2280) PCIe 3.0 x4 - NVM Express (NVMe)

Hors ligne

#14 Le 19/01/2020, à 18:12

Akatu

Re : Détecter les fichiers JPEG ayant PNG comme extension et les convertir

Merci beaucoup pour ton aide, ça va me faire gagner du temps :-)


KDE neon User Edition
LENOVO Ideapad L340-15IRH
Intel(R) Core(TM) i5-9300H CPU @ 2.40GHz (8 coeurs)
512 Go SSD - (M.2 2280) PCIe 3.0 x4 - NVM Express (NVMe)

Hors ligne

#15 Le 19/01/2020, à 18:17

Watael

Re : Détecter les fichiers JPEG ayant PNG comme extension et les convertir

je ne sais pas si convert modifie quelque chose dans les en-têtes de fichier (ce qui permet à file d'identifier le mime-type), mais mv ne le fera pas.

une recherche rapide indique d'utiliser mogrify
stfw: "imagemagick convert in place"


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne