2009-03-14 3 views

Répondre

23

dans votre info.plist ajouter

<key>CFBundleIconFile</key> 
<string>iconfile</string> 

avec fichier icône iconfile.icns dans votre Ressources répertoire

+0

Fonctionne parfaitement. Merci. –

+3

La réponse est correcte mais le Finder ne prend généralement pas le changement de l'icône immédiatement. Copiez l'ensemble dans un autre dossier pour l'enregistrer dans la nouvelle icône. – koan

+1

Je devais en outre supprimer l'icône vide? fichier à la racine du bundle. – ciastek

4

Si vous êtes venu ici parce que vous avez une seule application et que vous voulez changer l'image sur votre ordinateur uniquement (pas sûr comment cela fonctionne pour le partage), il existe des moyens beaucoup plus faciles. ici, en particulier, sont deux options que j'ai utilisées:

  1. Si vous souhaitez copier une icône existante:

    • Sélectionnez l'élément source et appuyez sur Cmd-I (Apple-I)
    • Sélectionnez l'élément que vous souhaitez modifier et appuyez sur Cmd-I (Apple-I)
    • Faites glisser l'icône de l'icône source vers l'icône supérieure gauche de celle que vous souhaitez modifier (l'image de l'exemple montre l'icône de la cible: c'est le l'icône 'folder' à gauche des mots "bird_id 2"): enter image description here
  2. Créez un fichier .icns à partir de n'importe quelle image. Si vous utilisez MacPorts, je recommande à la place d'utiliser les makeicns du port - voir ci-dessous pour plus d'informations. Vous pouvez également le faire en utilisant une application telle que http://www.img2icnsapp.com/ comme recommandé au https://discussions.apple.com/thread/2773825.

 
makeicns v1.4.10 (284bd686824f) 

Usage: makeicns [k1=v1] [k2=v2] ... 

Keys and values include: 
    512: Name of input image for 512x512 variant of icon 
    256: Name of input image for 256x256 variant of icon 
    128: Name of input image for 128x128 variant of icon 
    32: Name of input image for 32x32 variant of icon 
    16: Name of input image for 16x16 variant of icon 
    in: Name of input image for all variants not having an explicit name 
    out: Name of output file, defaults to first nonempty input name, 
     but with icns extension 

    align: [center, left, right, top, bottom] {First letter suffices!} 

Examples: 

    makeicns -512 image.png -32 image.png 
     Creates image.icns with only a 512x512 and a 32x32 variant. 

    makeicns -in myfile.jpg -32 otherfile.png -out outfile.icns 
     Creates outfile.icns with sizes 512, 256, 128, and 16 containing data 
     from myfile.jpg and with size 32 containing data from otherfile.png. 
+0

Brillant, c'est exactement ce dont j'avais besoin (et maintenant j'ai un lanceur graphique Emacs personnalisé qui hérite de tous mes paramètres .bashrc aussi, donc je peux facilement trouver les alias et autres scripts depuis un shell emacs ou eshell). – Ben

3

J'ai fait un petit script qui prend une grande image et redimensionne à toutes les tailles d'icônes attendues pour Mac OS, y compris les doubles pour les écrans de la rétine. Il prend le fichier png d'origine, que je m'attends à être aussi grand que la taille maximale, sinon plus, pour s'assurer qu'ils sont rendus à la qualité maximale.

Il est redimensionné et copié dans un jeu d'icônes et utilise l'outil 'iconutil' de Mac OS pour les joindre dans un fichier .icns. Pour que ce script s'exécute, vous avez besoin de votre fichier d'icône original en tant que png, et vous avez votre bundle en ordre de fonctionnement plus ou moins. Vous avez seulement besoin de toucher les trois premières lignes.

export PROJECT=Myproject 
export ICONDIR=$PROJECT.app/Contents/Resources/$PROJECT.iconset 
export ORIGICON=Mybigfile.png 

mkdir $ICONDIR 

# Normal screen icons 
for SIZE in 16 32 64 128 256 512; do 
sips -z $SIZE $SIZE $ORIGICON --out $ICONDIR/icon_${SIZE}x${SIZE}.png ; 
done 

# Retina display icons 
for SIZE in 32 64 256 512; do 
sips -z $SIZE $SIZE $ORIGICON --out $ICONDIR/icon_$(expr $SIZE/2)x$(expr $SIZE/2)x2.png ; 
done 

# Make a multi-resolution Icon 
iconutil -c icns -o $PROJECT.app/Contents/Resources/$PROJECT.icns $ICONDIR 
rm -rf $ICONDIR #it is useless now