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 26/08/2006, à 10:52

sylvaing01

Conversion d'icones mac (.icns) en png

Voilà, j'ai posé ma question dans la rubrique graphiqme, mais je n'ai pas eu de réponse, donc je repose ma question ici.

Voilà j'ai des icônes mac (icns) que je veut convertir en png. Seulement, ils ont apparemment 2 en-tête: Un en-tête avec écrit "iconmgr" et après l'en-tête "icns". Si je ne supprime pas l'en-tête "iconmgr", XnView (le seul programme que j'ai trouvé sous linux qui me reconnait les icones mac) ne les reconnait pas. Donc vu le nombre d'icones que j'ai (+ de 30000!) je voudrait écrire un script pour supprimer cet en-tête.

J'ai cherché une commande qui pourrait me faire çà, mais sans succès. J'ai vu que sed et gawk ne manipulent que des fichiers texte apparemment, alors ma question c'est: quel outils utiliser pour effectuer ce traitement?

Dernière modification par sylvaing01 (Le 28/08/2006, à 13:47)

Hors ligne

#2 Le 26/08/2006, à 11:41

abetsic

Re : Conversion d'icones mac (.icns) en png

Bonjour,

Tu peux essayer avec la commande od (initiales de octal display je crois) qui afficheras ton fichier binaire en octal, ou hexadécima, enfin un peu ce que tu veux...

à partir de là tu peux sûrement isoler ton en-tête et le manipuler à ta sauce... Par contre il faudra réécrire les données dans un nouveau fichier binaire, et là je ne sais pas trop comment il faut faire parce que si tu te contentes de rediriger la sortie avec ">" vers un nouveau fichier, le contenu du fichier sera du texte et non pas du binaire...

Fais un man od pour l'utilisation, c'est assez simple

Hors ligne

#3 Le 26/08/2006, à 12:14

sylvaing01

Re : Conversion d'icones mac (.icns) en png

Merci pour ta réponse, c'est déjà un bon début. Par contre comme toi, je ne voit aucune option pour enregistrer le fichier donc c'est pas encore çà. J'ai trouvé dans le même genre hexedit, mais c'est pareil pas d'option pour enregistrer le fichier.

bon, ben je continue mes recherches...

Hors ligne

#4 Le 26/08/2006, à 12:24

cep

Re : Conversion d'icones mac (.icns) en png

od affiche.

Pour un traitement en nombres, imagemagic (utilitaires) ne reconnait pas ce format ? au besoin pour les convertir ?

Hors ligne

#5 Le 26/08/2006, à 12:27

abetsic

Re : Conversion d'icones mac (.icns) en png

http://ftp.traduc.org/doc-vf/gazette-linux/html/2004/109/lg109-J.html

à cette adresse, l'utilisateur explique coment il a fait pour créer un fichier binaire à partir d'un shell en utilisant od et tostring et tonumber.

Fais une recherche dans la page sur "tonumber" et c'est à la deuxième occurence que c'est expliqué.

Hors ligne

#6 Le 26/08/2006, à 12:34

cep

Re : Conversion d'icones mac (.icns) en png

\h.s. je n'ai pas trouvé. Mais od est un afficheur. Ensuite tu peux le chaîner avec ce que tu veux. Sur 30000 fichiers il y a probablement plus simple. h.s./

Hors ligne

#7 Le 26/08/2006, à 12:43

abetsic

Re : Conversion d'icones mac (.icns) en png

Je viens d'essayer sur ma machine linux, et visiblement les utilitaires tostring et tonumber ne sont pas par défaut sur le système et je n'ai pas non  plus trouvé à quel paquets ils appartenaient...

Essayes comme l'a conseillé cep avec imagemagic, il doit pouvoir faire ça, de mémoire je crois que l'utilitaire convert permet la conversion d'images.

Sinon tu as toujours la possibilité d'écrire un petit programme dans le langage de ton choix, qui aura pour rôle de lire ton image, et écrire les données dans un nouveau fichier sans l'en-tête qui te gêne.

Dernière modification par abetsic (Le 26/08/2006, à 12:44)

Hors ligne

#8 Le 26/08/2006, à 14:49

sylvaing01

Re : Conversion d'icones mac (.icns) en png

Bon ben c'est kool, je vais regarder çà, de mon côté je vient de passer 2 heures à esayer de compiler icns2png (je suis pas doué pour la compile), mais il m'affiche une erreur (Erreur de segmentation).

Bon là je sature!!! je regarderai tout çà ce soir. Merci pour vos réponses.

Hors ligne

#9 Le 26/08/2006, à 15:20

abetsic

Re : Conversion d'icones mac (.icns) en png

J'ai besoin d'une petite précision, la manipulation que tu cherches à automatiser consiste juste à retirer les 4 premiers octets de ton fichier icns c'est ça ?

Dans ce cas le script suivant fera l'affaire, il prend le fichier que tu veux modifier en argument (un seul fichier, et sans espaces dans le nom de fichier) et retire les 4 premiers octets du fichier soit la séquence "icns"

#!/bin/sh
file=$1
newfile=`echo $1 | sed s/"\.icns"/"\.bidule"/`
size=`ls -l $file | cut -d " " -f 5`
sizetokeep=$(($size-4))
echo size : $size
echo sizetokeep : $sizetokeep
echo $newfile
tail -c $sizetokeep $file > $newfile

Tu peux adapter le fichier pour qu'il en retire plus en modifiant la variable sizetokeep
Tu peux mofifier le nom de fichier de sortie, pour l'instant l'extention .icns est remplacé par .bidule, tu peux virer les echo, qui ne m'ont servi qu'à réaliser le script, ils ne servent à rien.
Pour que le script supportent les espaces dans les noms de fichiers il faut rajouter des guillemets, autour de certaines variables normalement... enfin c'est plus simple de partir avec des fichiers sans espaces dans leur noms.


Voilà, en espérant t'avoir aidé.

Hors ligne

#10 Le 26/08/2006, à 15:23

sylvaing01

Re : Conversion d'icones mac (.icns) en png

ou non! Il y a un en-tête plus important et le problème c'est que tous les icones n'ont la même taille à enlever.

Ce qui faudrait, c'est un script qui me recherche la chaîne 'icns' dans le fichier et supprime tout ce qui ce trouve avant.

ps: va falloir que j'étudie ton script, çà a l'air pas mal

Hors ligne

#11 Le 26/08/2006, à 16:07

sylvaing01

Re : Conversion d'icones mac (.icns) en png

Je suis en train de me demander, j'ai les codes sources de icns2png (http://svn.sourceforge.net/viewvc/icns? … revision=1), vu qui y'a pas 50 fichiers, çà devrait être possible de trouver où çà plante (çà m'affiche 'Erreur de segmentation") et de le modifier pour qu'il saute cet en-tête.

çà risque d'être dur, parce que moi et le c++ (mon language de prédilection c'est l'assembleur... ren à voir!). j'ai quelques notions de C cependant. Je vais voir si c'est faisable...

si y'a des personnes qui peuvent m'éclairer sur le sujet, ils sont les bienvenus

Hors ligne

#12 Le 26/08/2006, à 17:05

abetsic

Re : Conversion d'icones mac (.icns) en png

Dans ce cas là en C, c'est peut être encore jouable, en gros tu parcours le fichier et tu notes l'octet où tu as rencontré la dernière chaine "icns" puis tu écris à partir de cet octet tout ce qui suit dans un nouveau fichier.

Sinon en shell, c'est peut être encore jouable... en affichant avec od les chaines de caractère, en faisant un grep sur icns, puis en regardant la dernière ligne renvoyé par le grep, tu as la dernière occurence de "icns" dans ton fichier, et en début de cette ligne tu as l'adresse à laquelle est la ligne... enfin c'est pas très clair ce que je dis... roll


Et sinon imagemagic ça donne quoi ?

Hors ligne

#13 Le 26/08/2006, à 20:52

sylvaing01

Re : Conversion d'icones mac (.icns) en png

C'a y est j'ai trouvé!!!

Il me manquait un outil: icontainer2icns
Un grand merci à Golgot200, t'es vraiment un balaise pour trouver des infos

Bon ben il me reste plus qu'à écrire le script qui devrait pas être dur!

Hors ligne

#14 Le 28/08/2006, à 13:45

sylvaing01

Re : Conversion d'icones mac (.icns) en png

Bon alors voilà j'ai écrit le script. c'etait plus dur que je pensait. bon je suis pas très doué avec les scripts, néanmoins mon script fonctionne. Par contre c'est un peu le foullit, et je m'y perd un peu, si quelqu'un a un sugestion pour l'améliorer ou le rendre plus propre, il est le bienvenu.

Le plus dur c'est que la plupart des icones mac commancent par "._" donc ils sont considérés comme des fichiers caché. Et il y a aussi les espaces dans les noms que je remplace par des "_" et je remet les espaces à la fin.

#! /bin/sh

rename 's/[ ]/_/' .*		#enlever les espaces
rename 's/[^ a-zA-Z0-9]//' .*	#enlever les caractères spéciaux mac
IFS=$(echo -e "\n\r\t")
for icone in $(ls .*) ; do
    entree=icon_0.icns 
    icontainer2icns $icone	#premier traitement
    if [ -e $entree ] ; then
	icns2png $entree	#deuxième traitement
        rm -f "icon_0.icns"
	rm -f "icon_1.icns"	#supprimer les fichier temporaires
	mv icon_0.png $icone${i#icon_0} #renommer le fichier résultant
    fi
done
rename 's/[.]//' .*		#supprimer les "."
rename 's/[_]/ /' *		#remettre mes espaces
rename 's/.icns$/.png/' *	#remplacer l'extension

Attention, il ne fonctionne pas en cliquant sur le dossier, mais dans le dossier (si quelqu'un à une suggestion la-dessus).

Autre point qui ne semble pas opérationnel, apparemment pour les lignes rename, seul le premier caractère à remplacer est remplacé.

bref faite moi part de vos suggestions.

PS: pensez à installer icontainer2icns:http://baghira.sourceforge.net/Goodies/ … ns.tar.bz2 et icns2png:http://svn.sourceforge.net/viewvc/icns? … revision=1

et sans oublier un petit tour sur un site d'icones mac: http://interfacelift.com/icons-mac/inde … id=&page=1

Dernière modification par sylvaing01 (Le 28/08/2006, à 13:48)

Hors ligne