Iconutil का उपयोग करके आइकनों फ़ाइलों को मैन्युअल रूप से कैसे बनाएं?


106

जब मैं अपने ऐप को सत्यापित कर रहा हूं तो मुझे यह त्रुटि मिली:

एप्लिकेशन बंडल में ICNS प्रारूप में एक आइकन नहीं है, जिसमें एक 512x512और एक 512x512@2xछवि दोनों हैं ।

मैं Img2icns ऐप के साथ आइकन आइकन बनाने के लिए उपयोग करता हूं और आज तक यह हमेशा ठीक से काम करता है। लेकिन अब मुझे वह त्रुटि मिल रही है और इसे काम करने का कोई तरीका नहीं है। मैंने Img2icns में एक साथ ( 512x512और 1024x1024) दो पीएनजी फाइलें डालने की कोशिश की लेकिन मुझे हमेशा वह त्रुटि मिलती है। मैंने Apple के OS X मानव इंटरफ़ेस दिशानिर्देश में निर्देशों का पालन करने की भी कोशिश की, लेकिन जब मैं आइकन सेट करने का प्रयास करता हूं तो मुझे यह टर्मिनल त्रुटि मिलती है:

-बैश: अप्रत्याशित टोकन 'न्यूलाइन' के पास सिंटैक्स त्रुटि

मैं टर्मिनल कमांड के साथ बहुत अच्छा नहीं हूं इसलिए शायद मैं कुछ गलत कर रहा हूं। मैंने लिखा:

iconutil -c icns </Users/myname/SDK Mac Apps/MyApp/grafica/icon.iconset>

अगर कोई मदद कर सकता है तो इसकी बहुत सराहना की जाएगी। धन्यवाद, मासी।


मैंने एक ऐप बनाया है, जो इस आसान को बनाने के लिए आइकनूटिल को लपेटता है: hobbyistsoftware.com/icontool
कन्फ्यूज्ड

जवाबों:


63

निम्नलिखित निर्देशों की जाँच करें ( लिंक ):

मैन्युअल रूप से एक आइकन फ़ाइल बनाने के लिए iconutil का उपयोग करें

iconutilकमांड लाइन उपकरण धर्मान्तरित iconsetतैनाती के लिए तैयार, उच्च संकल्प के लिए फ़ोल्डर फ़ाइलें icns। (आप man iconutilटर्मिनल में प्रवेश करके इस टूल के लिए पूर्ण दस्तावेज़ पा सकते हैं ।) इस टूल का उपयोग करने से परिणामी icnsफ़ाइल भी संकुचित हो जाती है, इसलिए आपको अतिरिक्त संपीड़न करने की कोई आवश्यकता नहीं है।

आइकन के एक सेट को एक आइकन्स फ़ाइल में बदलने के लिए

इस आदेश को टर्मिनल विंडो में दर्ज करें:

iconutil -c icns <iconset filename>

<iconset filename>उस फ़ोल्डर का पथ कहाँ है जिसमें उन आइकनों के सेट हैं जिन्हें आप कनवर्ट करना चाहते हैं icns। आउटपुट को उसी स्थान पर लिखा जाता है iconset file, जब तक आप आउटपुट फ़ाइल निर्दिष्ट नहीं करते हैं:

iconutil -c icns -o <icon filename> <iconset filename>

दूसरे शब्दों में, आपको <iconset filename>पथ से बदलने की आवश्यकता है :

/Users/myname/SDK Mac Apps/MyApp/grafica/icon.iconset

चूंकि पथ में रिक्त स्थान हैं, इसलिए आपको उदाहरण के लिए दोहरे उद्धरण चिह्नों का उपयोग करने की आवश्यकता है:

iconutil -c icns "/Users/myname/SDK Mac Apps/MyApp/grafica/icon.iconset"

यह कमांड ठीक से काम करना चाहिए।


2
तुम्हें शायद उपयोग करने की जरूरत नहीं है iconutil, यद्यपि। आप अपनी परियोजना में सिर्फ आइकॉन को जोड़ सकते हैं और Xcode को निर्माण के हिस्से के रूप में परिवर्तित कर सकते हैं। यह तुरंत पिछले (बहुत छोटा) अनुभाग में कवर किया गया है: developer.apple.com/library/mac/documentation/GraphicsAnimation/…
पीटर होसी सेप

@Anne: आइक्यूटिल कमांड को छोड़कर केवल उन OS संस्करणों के साथ शामिल किया गया है जो ICNS फ़ाइलों का उपयोग नहीं करते हैं ... हमारे लिए कोई प्रेम नहीं है जो OS10.6.8 V1.1 का उपयोग करते हैं ... यह एक और भी बदतर 'हमारे रास्ते या राजमार्ग' है उपयोगकर्ताओं की तुलना में devs के लिए।
हेनरिक एर्लडसन सेप

@Anne: यह काम किया ... बहुत बहुत धन्यवाद! (मेरे सवाल को ठीक से सेट करने के लिए धन्यवाद)। शांति, मस्ति
ब्लू

@HenrikErlandsson: Mac OS X के सभी संस्करण .icns फ़ाइलों का उपयोग करते हैं, जो सभी 10.0 पर वापस आते हैं।
पीटर होसी सेप

10
निम्नलिखित फाइलें मौजूद होनी चाहिए: icon_16x16.png, icon_16x16@2x.png, icon_32x32.png, icon_32x32@2x.png, icon_128x128.png, icon_128x128@2x.png, icon_256x256.png, icon_256x6x। @ 2x फ़ाइलों को 144 पिक्सेल प्रति इंच पर संग्रहित किया जाना चाहिए, जबकि अन्य को 72 पिक्सेल प्रति इंच पर संग्रहित किया जाना चाहिए।
कैरम

284

यहां आवश्यक आइकनों फ़ाइल के लिए 1024x1024 png ("Icon1024.png" नाम) को बदलने के लिए एक स्क्रिप्ट है। इसे फ़ोल्डर में "CreateICNS.src" नामक फाइल में सेव करें जहां आपकी पीएनजी फाइल फिर उसी फ़ोल्डर में टर्मिनल "cd" में है और इसे कॉल करने के लिए "स्रोत CreateICNS.src" टाइप करें:

mkdir MyIcon.iconset
sips -z 16 16     Icon1024.png --out MyIcon.iconset/icon_16x16.png
sips -z 32 32     Icon1024.png --out MyIcon.iconset/icon_16x16@2x.png
sips -z 32 32     Icon1024.png --out MyIcon.iconset/icon_32x32.png
sips -z 64 64     Icon1024.png --out MyIcon.iconset/icon_32x32@2x.png
sips -z 128 128   Icon1024.png --out MyIcon.iconset/icon_128x128.png
sips -z 256 256   Icon1024.png --out MyIcon.iconset/icon_128x128@2x.png
sips -z 256 256   Icon1024.png --out MyIcon.iconset/icon_256x256.png
sips -z 512 512   Icon1024.png --out MyIcon.iconset/icon_256x256@2x.png
sips -z 512 512   Icon1024.png --out MyIcon.iconset/icon_512x512.png
cp Icon1024.png MyIcon.iconset/icon_512x512@2x.png
iconutil -c icns MyIcon.iconset
rm -R MyIcon.iconset

3
उत्तम। मैं डेस्कटॉप पर Icon1024.png डालता हूं, और बस अपना कोड चलाता हूं और यह सब किया जाता है
तर्क

2
क्या यह संभव है कि यह सही लिपि लिपि El Capitan में टूट गई हो? मेरे मैक को 10.11.3 पर अपग्रेड किया गया और यह स्क्रिप्ट अब "एरर: अनसुपर्ड इमेज फॉर्मेट" लौटाती है, फिर "/User/IconScript/MyIcon-osx.iconset:error: वेरिएंट नाम 'आइकन' का कोई इमेज रिसोर्स नहीं है।" तब "MyIcon-osx.iconset: error: ICNS उत्पन्न करने में विफल।" एक ही स्क्रिप्ट और .png फ़ाइल को एक मैक पर आज़माया गया, जो एल कैपिटन के लिए अद्यतन नहीं है और यह हमेशा की तरह वहाँ काम करता है ... =
RanLearns

1
हाँ @ हेनरी, मैं सिर्फ कोशिश करने और टिप्पणी क्लीनर बनाने के लिए फ़ोल्डर नामों को हटा रहा था, मैं इसे टर्मिनल में फ़ोल्डर के भीतर से चला रहा हूं जिसमें src स्क्रिप्ट और आइकन शामिल हैं। पहले की तुलना में एकमात्र चीज़ एल कैपिटन बनाम योसेमाइट है ... मैंने शाब्दिक रूप से सफलता के साथ ओएस को अपडेट करने से पहले स्क्रिप्ट का उपयोग किया और फिर अपडेट करने के बाद (उसी फ़ोल्डर में, उसी टर्मिनल कमांड में) और अब वह त्रुटि वापस करता है। क्या आपको एल कैपिटन पर इसके साथ सफलता मिली है?
RanLearns

3
ध्यान देने योग्य महत्वपूर्ण बातें: आपकी आइकन छवि फ़ाइल नाम "icon_" से शुरू होना चाहिए । छवियों में एक अल्फा चैनल होना चाहिए। आप जरूरत पड़ने पर ImageMagick के साथ एक अल्फा चैनल जोड़ सकते हैं convert abc.png -define png:color-type=6 abc_with_alpha.png
डेविड ग्रेसन

1
हे भगवान। इलेक्ट्रॉन ऐप बनाना और आइकनों से निपटना इस तरह का दर्द रहा है। सभी ब्लॉग ट्यूटोरियल पुराने ऑनलाइन उपयोगिताओं की ओर इशारा करते हैं। स्टेकरफ्लो पर यहां आपकी सरल स्क्रिप्ट ने मेरा दिन बना दिया। धन्यवाद!
nelsonenzo

26

विभिन्न प्रकार की PNGनिम्न-रिज़ॉल्यूशन प्रतियों की अधिकता के लिए हाय-रेस छवि को परिवर्तित करने के लिए सभी प्रकार की लिपियों का उपयोग करना आसान हो सकता है (और यह वास्तव में है), किसी को यह नहीं भूलना चाहिए कि इस तरह के स्वचालित आकार बदलने से अवधारणात्मक रूप से अपूर्ण छवियों को प्रस्तुत किया जाएगा ।

संकल्प कम - आइकन धब्बा!

मेरा मतलब है, मैं imagemagickभी प्यार करता हूं , लेकिन यह इस कार्य के लिए सही उपकरण नहीं है!

इसके बजाय, आपको हमेशा अपने डिजाइनर से कुछ वेक्टर प्रारूप में लोगो का अनुरोध करना चाहिए, उदाहरण के लिए SVG। इसके साथ, आप मैन्युअल रूप PNGसे सभी आवश्यक प्रस्तावों में सही फाइलें तैयार कर सकते हैं और फिर एक एकल .icnsफ़ाइल बना सकते हैं, जो आपके ऐप आइकन को हर एक स्क्रीन पर सुंदर दिखेगी, सस्ते iPhone SE से लेकर कुछ उच्च-अंत तक रेटिना का नवीनतम प्रदर्शन आईमैक। इन PNG को जेनरेट करने के लिए आप फोटोशॉप, जीआईएमपी या अपनी पसंद के किसी अन्य टूल का उपयोग कर सकते हैं।

2020 के रूप में नवीनतम Apple के मानव इंटरफ़ेस दिशानिर्देशों से, आपको निम्नलिखित PNGफाइलें तैयार करनी चाहिए :

+---------------------+--------------------+--------------+
|      filename       | resolution, pixels | density, PPI |
+---------------------+--------------------+--------------+
| icon_16x16.png      | 16x16              |           72 |
| icon_16x16@2x.png   | 32x32              |          144 |
| icon_32x32.png      | 32x32              |           72 |
| icon_32x32@2x.png   | 64x64              |          144 |
| icon_128x128.png    | 128x128            |           72 |
| icon_128x128@2x.png | 256x256            |          144 |
| icon_256x256.png    | 256x256            |           72 |
| icon_256x256@2x.png | 512x512            |          144 |
| icon_512x512.png    | 512x512            |           72 |
| icon_512x512@2x.png | 1024x1024          |          144 |
+---------------------+--------------------+--------------+

सभी PNG फाइलें तैयार होने के बाद, उन्हें .iconsetविस्तार के साथ कुछ निर्देशिका में रखें ( Logos.iconsetउदाहरण के लिए) और निम्नलिखित में से निम्नलिखित को निष्पादित करें Terminal:

iconutil --convert icns Logos.iconset

यदि इस कमांड को निष्पादित करने के बाद कोई त्रुटि नहीं थी, तो सभी फ़ाइलों को ठीक से संसाधित किया गया था, और आपको Logos.icnsउसी निर्देशिका में फ़ाइल मिली , जिसमें आपके ऐप के लिए सभी सुंदर कुरकुरा लोगो होंगे जो किसी भी आधुनिक स्क्रीन के अनुरूप होंगे।


16

एक कमांड-लाइन नोड मॉड्यूल है जो PNG फ़ाइल को एक आइकॉनसेट डायरेक्टरी में बदलने का काम करता है:

npm install -g node-icns
nicns --in adventure-cat.png --out adventure-cat.icns

9
अब समर्थित नहीं। :(
jamescampbell

13

इन कमांड (टर्मिनल में दर्ज) ने मेरे लिए एक पुराने आइकॉन फ़ाइल को नए प्रारूप में बदलने का काम किया:

cd Folder_With_Icns_File
iconutil -c iconset Your_Icon_Name.icns 
rm Your_Icon_Name.icns 
iconutil -c icns Your_Icon_Name.iconset
rm -R Your_Icon_Name.iconset

अपडेट करें

-cIconutil पैरामीटर का समर्थन बंद कर रहा है। --convertइसके बजाय उपयोग करें :

cd Folder_With_Icns_File
iconutil --convert iconset Your_Icon_Name.icns 
rm Your_Icon_Name.icns 
iconutil --convert icns Your_Icon_Name.iconset
rm -R Your_Icon_Name.iconset

1
यह दिखाने के लिए धन्यवाद, इस के लिए धन्यवाद मैं pngs पाने के लिए icns से रिवर्स करने में सक्षम था! :)
Noitidart

9

अतिरिक्त टिप्पणी, जब आप .icns फ़ाइल बनाते हैं, तो आपको उपसर्ग "icon_ " के साथ सभी पिक फ़ाइलों का नाम बदलने की आवश्यकता होती है , अन्यथा, iconutil त्रुटि संदेश के साथ विफल हो जाएगा: ".iconset: त्रुटि: ICNS उत्पन्न करने में विफल।" जो जानकारीपूर्ण नहीं है।


7

@Henry के रूप में भी (ऊपर टिप्पणी) लेकिन PNG फ़ाइल नाम के तर्क के रूप में लेता है और ICNS को उसी नाम से आउटपुट करता है।

नोट: PNG फ़ाइल नाम में केवल 1 बिंदु के अलग-अलग एक्सटेंशन यानी xpto.png होने की उम्मीद है।

इसलिए, नीचे दिए गए कोड को "CreateICNS.src" नामक फ़ोल्डर में सहेजें जहां आपकी png फाइल है।

कोड:

IFS='.' read -ra ADDR <<< "$1"
ICONSET=${ADDR[0]}.iconset
mkdir $ICONSET
sips -z 16 16     $1 --out $ICONSET/icon_16x16.png
sips -z 32 32     $1 --out $ICONSET/icon_16x16@2x.png
sips -z 32 32     $1 --out $ICONSET/icon_32x32.png
sips -z 64 64     $1 --out $ICONSET/icon_32x32@2x.png
sips -z 128 128   $1 --out $ICONSET/icon_128x128.png
sips -z 256 256   $1 --out $ICONSET/icon_128x128@2x.png
sips -z 256 256   $1 --out $ICONSET/icon_256x256.png
sips -z 512 512   $1 --out $ICONSET/icon_256x256@2x.png
sips -z 512 512   $1 --out $ICONSET/icon_512x512.png
cp $1 $ICONSET/icon_512x512@2x.png
iconutil -c icns $ICONSET
rm -R $ICONSET

कैसे इस्तेमाल करे :

फिर टर्मिनल में, उसी फ़ोल्डर में "cd" और टाइप करें:

source CreateICNS.src {PNG filename}

जहाँ {PNG फ़ाइल नाम} आपकी PNG फ़ाइल का नाम है, अर्थात xpto.png।

यदि आपकी फ़ाइल का नाम abc.png होगा तो आप इसका उपयोग करेंगे:

source CreateICNS.src abc.png

बहुत बढ़िया! मृत सरल :) शायद यह एक .sh / स्क्रिप्ट बना देता है और भी अधिक बना देगा :) धन्यवाद!
गुतेमबर्ग रिबेरो

6

मैंने svg फ़ाइल से आइकन्स बनाने के लिए एक bash स्क्रिप्ट लिखी है:

#!/usr/bin/env bash 
sizes=(16 32 64 128 256 512)
largfile='icon_512x512@2x.png'
if [ ! -f "$largfile" ]; then
  convert -background none -resize 1024x1024 "$1" "$largfile"
fi
for s in "${sizes[@]}"; do
  echo $s
  convert -background none -resize ${s}x${s} "$largfile" "icon_${s}x$s.png"
done

cp 'icon_32x32.png'     'icon_16x16@2x.png'
mv 'icon_64x64.png'     'icon_32x32@2x.png'
cp 'icon_256x256.png'   'icon_128x128@2x.png'
cp 'icon_512x512.png'   'icon_256x256@2x.png'

mkdir icon.iconset
mv icon_*x*.png icon.iconset
iconutil -c icns icon.iconset

सुनिश्चित करें कि आपके पास मैक पर librsvg समर्थन के साथ इमेजमैगिक स्थापित है:

brew install imagemagick --with-librsvg

इस स्क्रिप्ट ने मुझे काफी अच्छा किया है।


अपडेट करें

अधिक गहन उपचार के लिए, मैंने AppIcon.appiconsetसही लेआउट और प्रारूप के साथ उत्पन्न करने के लिए एक कमांड लाइन टूल (स्विफ्ट में लिखा) बनाया है :

https://github.com/kindlychung/genicon


5

मैंने इसे बेहतर दिखाने के लिए @ हेनरी की स्क्रिप्ट को फिर से बनाया है:

#!/bin/zsh
NAME=$(basename $1 .png); DIR="$NAME.iconset"
mkdir -pv $DIR
for m r in 'n' '' '((n+1))' '@2x'; do
    for n in $(seq 4 9 | grep -v 6); do
        p=$((2**$m)); q=$((2**$n))
        OUT="$DIR/icon_${q}x${q}${r}.png"
        sips -z $p $p $1 --out $OUT
    done
done
iconutil -c icns $DIR
rm -frv $DIR

अपडेट करें

-cIconutil पैरामीटर का समर्थन बंद कर रहा है। -—convertइसके बजाय उपयोग करें :

#!/bin/zsh
NAME=$(basename $1 .png); DIR="$NAME.iconset"
mkdir -pv $DIR
for m r in 'n' '' '((n+1))' '@2x'; do
    for n in $(seq 4 9 | grep -v 6); do
        p=$((2**$m)); q=$((2**$n))
        OUT="$DIR/icon_${q}x${q}${r}.png"
        sips -z $p $p $1 --out $OUT
    done
done
iconutil -—convert icns $DIR
rm -frv $DIR

4
मूल संस्करण सरल है और किसी भी शेल में मैन्युअल रूप से प्रक्रिया को पुन: पेश किया जा सकता है।
डेनिस ब्रेमेनकोव

1
यदि आप मैन्युअल रूप से चीजें करना पसंद करते हैं तो आपको कंप्यूटर की आवश्यकता नहीं है।
दारोगा 82२

5

मृत सरल .Png ic .nsns

  1. IconMaker.app डाउनलोड करें - यह सिर्फ एक है
  2. खींचें और अपने .png को IconMaker.app पर छोड़ दें, जिसे आपने अभी बनाया है।

अधिक जानकारी : http://eon.codes/blog/2016/12/06/Creating-an-app-icon/

उच्च सिएरा अपडेट iconutil अब स्रोत .png आकार के बारे में अधिक सख्त है। छलांग के बाद ब्लॉग पोस्ट में इसके बारे में अधिक। ✌️


3

जब मैं अपने ऐप को सत्यापित कर रहा हूं तो मुझे यह त्रुटि मिली:

आवेदन बंडल में ICNS प्रारूप में एक आइकन नहीं है, जिसमें 512x512 और 512x512 @ 2x छवि दोनों हैं।

मैं टर्मिनल कमांड के साथ बहुत अच्छा नहीं हूं और इसलिए शायद मैं कुछ गलत कर रहा हूं। मैंने लिखा:

iconutil -c icns </Users/myname/SDK Mac Apps/MyApp/grafica/icon.iconset>

एक बात के लिए, जैसा कि मैंने ऐनी के जवाब पर एक टिप्पणी में उल्लेख किया है, आपको संभवतः आईक्यूटिल का उपयोग करने की आवश्यकता नहीं है। आपको अपनी परियोजना में सिर्फ आइकानसेट जोड़ने में सक्षम होना चाहिए और एक्सकोड को निर्माण के हिस्से के रूप में आपके लिए परिवर्तित करने देना चाहिए।

किसी भी तरह से, यह आपकी समस्या हो सकती है:

मैंने दो PNG फ़ाइलें togheter (512x512 और 1024x1024) डालने की कोशिश की ... लेकिन मुझे हमेशा त्रुटि मिलती है।

1024 बिंदु आकार से 1024 नहीं है। 1024 बाय 1024 पिक्सेल तत्व (जो माउंटेन लायन से पहले 1024 अंक था) अब 512 के लिए 512 अंक @ 2x का उपयोग किया जाता है।

आपकी PNG फ़ाइल को उचित नाम दिया जाना चाहिए: icon_512x512@2x.png


3

ऐप्पल का पुराना आइकन कम्पोज़र संस्करण 2.2 ठीक काम करता है, आप बस इसमें .ICNS खोलें, 1024x1024 बटन दबाएं और अपनी छवि जोड़ें।


मैं मूल प्रश्न पूछने वाले के लिए बात नहीं कर सकता, लेकिन यह जवाब वास्तव में मैं क्या जरूरत है। धन्यवाद!
पेस्टोफैगस

3
Apple डॉक्स का कहना है कि "नोट: आइकन कम्पोज़र का उपयोग न करें- यह उच्च-रिज़ॉल्यूशन के आइकॉन फाइल नहीं बना सकता है।" यही है, @ 2x आइकन इस तरह से नहीं किया जा सकता है।
क्ले ब्रिजेट्स

आइकन कम्पोजर ठीक काम करने लगता है, इसे अलग से Apple डेवलपर साइट के रूप में Xcode पैकेज के लिए ग्राफिक्स टूल्स के भाग के रूप में शिप किया जाता है। यह भी देखें यहाँ
मिकिएल कौव-ए-तजो

3

@ dardo82 का शेल कोड अच्छा है और काम किया है। यहाँ एक सरल में sh है (सभी * nix के लिए) और तेज़ (जैसे यह वास्तव में मायने रखता है):

#!/bin/sh
#   This runs silent, be as verbose as you wish
NAME=$(basename ${1} .png)
DIR="${NAME}.iconset"
mkdir -p ${DIR}
for i in 16 32 128 256 512 ; do
    x=""
    for p in $i $(($i+$i)) ; do
        sips -z $p $p ${1} --out "${NAME}.iconset/icon_${i}x${i}${x}.png"
        x="@2x"
    done
done >/dev/null  # /dev/null in lieu of a "-s" silent option
iconutil -—convert icns $DIR
rm -r $DIR

मेरी स्क्रिप्ट में भिन्नता के लिए धन्यवाद, अब मुझे भी यकीन नहीं है कि मैंने
बजे

1

यहाँ हेनरी के उदाहरण के आधार पर एक समारोह है (उपयोगी हो सकता है ~/.bash_profile):

mkicns() {
    if [[ -z "$*" ]] || [[ "${*##*.}" != "png" ]]; then
        echo "Input file invalid"
    else
        filename="${1%.*}"
        mkdir "$filename".iconset
        for i in 16 32 128 256 ; do
            n=$(( i * 2 ))
            sips -z $i $i "$1" --out "$filename".iconset/icon_${i}x${i}.png
            sips -z $n $n "$1" --out "$filename".iconset/icon_${i}x${i}@2x.png
            [[ $n -eq 512 ]] && \
            sips -z $n $n "$1" --out "$filename".iconset/icon_${n}x${n}.png
            (( i++ ))
        done
        cp "$1" "$filename".iconset/icon_512x512@2x.png
        iconutil -c icns "$filename".iconset
        rm -r "$filename".iconset
    fi
}

उपयोग :

$ mkicns "filename.png"  # double-quote if spaces exist in filename

से 10 आकार बनाता 16x16है 512x512@2x; .pngकेवल प्रारूप में इनपुट छवियों को स्वीकार करता है ।


1

Daud iconutil -c icns Icon.iconset

ध्यान दें

  • Icon.iconset एक फ़ोल्डर है
  • नाम लोअरकेस से शुरू होता है icon_
  • जब आप Icon.icnsसही छवि के साथ देखते हैं , तो आप जानते हैं कि यह काम करता है

यहां छवि विवरण दर्ज करें


क्यों 3x? Apple को इसकी आवश्यकता नहीं है।
न्यूरोट्रांसमीटर

1

2 कार्य हैं:
- 10 सही आइकॉन फाइलें बनाएं
- उन्हें सही तरीके से उपयोग करने के लिए अपना एक्सकोड प्रोजेक्ट प्राप्त करें

जैसा कि मुझे इन दोनों कार्यों में लंबे समय से समस्या थी, और यह भी पसंद नहीं है कि जब मैं 'नहीं' देख रहा हूं तो क्या हो रहा है, यहां सतर्क लोगों के लिए एक रास्ता है:

10 सही आइकन्स फाइल्स बनाएँ:
मैंने हेनरी से ऊपर की स्क्रिप्ट का उपयोग किया: यह अभी भी हाईस्कूल और Xcode 9.2 के लिए काम करता है, जिसमें 'C' कमांड भी शामिल है।
मुझे मिली आइकन्स फ़ाइल, फाइंडर / क्विकवेयर में केवल एक आइकन आकार के रूप में दिखाई दी और पूर्वावलोकन में केवल 8 में से 10 आकार दिखाई दिए।
इसलिए मैंने टर्मिनल का उपयोग किया, अपने फ़ोल्डर में cd के साथ गया और कमांड का उपयोग किया: iconutil -c iconset (icns filename), आइकॉन्स फाइल को एक आइकॉनसेट फ़ोल्डर में वापस लाने के लिए बस बनाई गई आइकन्स फाइल पर, और - lo &होल्ड - मैं देख सकता था मेरी नई बनाई गई 10 आइकन फाइलें। आइकॉसेट फोल्डर पर क्विक लुक (और फुल स्क्रीन मोड का उपयोग करके स्लाइडर के माध्यम से उन्हें ज़ूम करने में सक्षम) का उपयोग करके, मैं देख सकता था कि सभी आकार वास्तव में बहुत अच्छे दिख रहे हैं।

एक तरफ के रूप में: वे पीएसई के साथ मेरे आकार बदलने के प्रयासों से बेहतर थे, सबसे अधिक संभावना है क्योंकि मैंने पीएसई में सभी आकार बदलने के विकल्पों के साथ खेलने के लिए समय नहीं लिया। यदि आप PSE का उपयोग करते हैं, तो सुनिश्चित करें कि आपकी png फाइलें बिना कलर प्रोफाइल के सेव हैं। इसके अलावा, मेरी अज्ञानता को स्वीकार करते हुए, मेरे लिए एक 256x256 @ 2 फ़ाइल 512x512 फ़ाइल के समान है - दोनों 72dpi में। 144 डीपीआई टिप्पणियों का पालन करने की कोशिश करने से मेरे लिए काम नहीं किया गया।

उन्हें सही ढंग से उपयोग करने के लिए अपने Xcode प्रोजेक्ट को प्राप्त करें:
पहले मैंने Xcode के भीतर अपने सभी फालतू प्रयासों को नष्ट कर दिया और गिट रिपॉजिटरी (जो होशियार रहा होगा, एक साफ संस्करण के लिए प्रतिबद्ध किया गया था) पहले एक स्वच्छ संस्करण के लिए प्रतिबद्ध होगा - इससे पहले कि मैं आइकन शुरू करूं इसके अलावा ओडिसी)।
मैंने यह भी सुनिश्चित किया कि info.plist फाइल में 'आइकन फाइल' एंट्री से जुड़ा कोई पॉइंटर नहीं है और मेरी जनरल प्रोजेक्ट सेटिंग्स में मैंने ऐप आईकॉन के लिए AppIcon को चुना था।
फिर मैंने एक संपत्ति.सेट सूची और संपत्ति सूची के भीतर एक नया 'AppIcons और लॉन्च छवियाँ' OS के लिए AppIcon फ़ोल्डर जोड़ा।
तब मैंने संबंधित AppIcon Spaceholder में प्रत्येक पीएनजी पिक्चर फाइल के आइकॉन फोल्डर से कॉपी (ड्रैग एंड ड्रॉप विद ऑप्शन दबाया) किया। तो फिर, मैं देख सकता था कि क्या हो रहा है। Xcode ने उसे आइकनों की फाइलों में परिवर्तित कर दिया, या हो सकता है - जैसे कि मेरे आइकन्स फ़ोल्डर को एक आइकन्स फ़ोल्डर से प्राप्त किया गया था - फ़ाइल स्वरूपों को स्वीकार कर लिया गया था।

फिर संग्रह और सत्यापन और अपलोड करने या मान्य करने में कोई त्रुटि नहीं होगी।


प्रारूपित करना! आपका उत्तर अच्छा हो सकता है, लेकिन अपठनीय है। पैराग्राफ और गाड़ी के रिटर्न का उपयोग करें।
निक 3500

0

मुझे इसकी जरूरत थी, लेकिन सीएमके लिए। मैं इसे एसवीजी देने का विकल्प भी चाहता था।

यहाँ है जिस्ट: https://gist.github.com/Qix-/f4090181e55ea365633da8c3d0ab5249

और CMake कोड:

# LICENSE: CC0 - go nuts.

# Hi :) This is what I used to generate the ICNS for my game, Tide.
# Both input formats (SVG vs PNG) work just fine, but in my experience
# the SVG came out with noticeably better results (although PNG wasn't
# a catastrophe either). The logo for the game was simple enough that
# SVG was indeed an option.

# To use:
#
#    make_icns( INPUT "path/to/img.{svg,png}"
#               OUTPUT ICNS_PATH )
#
# Then add it as a custom target or use it as a
# dependency somewhere - I give you that option.
#
# For example:
#
#    add_custom_target( my-icns ALL DEPENDS "${ICNS_PATH}" )
#
# For the associated utilities:
#
# - PNG: brew install imagemagick
# - SVG: brew cask install inkscape
#
# Enjoy!

function (make_icns_from_png)
    cmake_parse_arguments (
        ARG
        ""             # Boolean args
        "INPUT;OUTPUT" # List of single-value args
        ""             # Multi-valued args
        ${ARGN})

    find_program (
        convert_exe
        NAMES "convert" "convert.exe"
        DOC "Path to ImageMagick convert")
    if (NOT convert_exe)
        message (FATAL_ERROR "Could not find ImageMagick's 'convert' - is ImageMagick installed?")
    endif ()

    get_filename_component (ARG_INPUT_ABS "${ARG_INPUT}" ABSOLUTE BASE_DIR "${CMAKE_CURRENT_SOURCE_DIR}")
    get_filename_component (ARG_INPUT_ABS_BIN "${ARG_INPUT}" ABSOLUTE BASE_DIR "${CMAKE_CURRENT_BINARY_DIR}")
    get_filename_component (ARG_INPUT_FN "${ARG_INPUT_ABS_BIN}" NAME_WE)
    get_filename_component (ARG_INPUT_DIR "${ARG_INPUT_ABS_BIN}" DIRECTORY)

    set (sourceimg "${ARG_INPUT_ABS}")

    set (basepath "${ARG_INPUT_DIR}/${ARG_INPUT_FN}")
    set (output_icns "${basepath}.icns")
    set (iconset "${basepath}.iconset")

    set (deplist "")

    foreach (size IN ITEMS 16 32 128 256 512)
        math (EXPR size2x "2 * ${size}")

        set (ipath "${iconset}/icon_${size}x${size}.png")
        set (ipath2x "${iconset}/icon_${size}x${size}@2x.png")

        list (APPEND deplist "${ipath}" "${ipath2x}")

        add_custom_command (
            OUTPUT "${ipath}"
            COMMAND "${convert_exe}" ARGS "${sourceimg}" -resize "${size}x${size}" "${ipath}"
            MAIN_DEPENDENCY "${sourceimg}"
            COMMENT "ICNS resize: ${ipath}"
            VERBATIM)

        add_custom_command (
            OUTPUT "${ipath2x}"
            COMMAND "${convert_exe}" ARGS "${sourceimg}" -resize "${size2x}x${size2x}" "${ipath2x}"
            MAIN_DEPENDENCY "${sourceimg}"
            COMMENT "ICNS resize: ${ipath2x}"
            VERBATIM)
    endforeach ()

    add_custom_command (
        OUTPUT "${output_icns}"
        COMMAND iconutil ARGS --convert icns --output "${output_icns}" "${iconset}"
        MAIN_DEPENDENCY "${sourceimg}"
        DEPENDS ${deplist}
        COMMENT "ICNS: ${output_icns}"
        VERBATIM)

    if (ARG_OUTPUT)
        set ("${ARG_OUTPUT}" "${output_icns}" PARENT_SCOPE)
    endif ()
endfunction ()

function (make_icns_from_svg)
    cmake_parse_arguments (
        ARG
        ""             # Boolean args
        "INPUT;OUTPUT" # List of single-value args
        ""             # Multi-valued args
        ${ARGN})

    set (CMAKE_FIND_APPBUNDLE NEVER) # otherwise, it'll pick up the app bundle and open a shit ton of windows
    find_program (
        inkscape_exe
        NAMES "inkscape" "inkscape.exe"
        DOC "Path to Inkscape"
        PATHS "/usr/local/bin" "/usr/bin")

    message (STATUS "Inkscape path: ${inkscape_exe}")

    if (NOT inkscape_exe)
        message (FATAL_ERROR "Could not find Inkscape - is it installed?")
    endif ()

    get_filename_component (ARG_INPUT_ABS "${ARG_INPUT}" ABSOLUTE BASE_DIR "${CMAKE_CURRENT_SOURCE_DIR}")
    get_filename_component (ARG_INPUT_ABS_BIN "${ARG_INPUT}" ABSOLUTE BASE_DIR "${CMAKE_CURRENT_BINARY_DIR}")
    get_filename_component (ARG_INPUT_FN "${ARG_INPUT_ABS_BIN}" NAME_WE)
    get_filename_component (ARG_INPUT_DIR "${ARG_INPUT_ABS_BIN}" DIRECTORY)

    set (sourceimg "${ARG_INPUT_ABS}")

    set (basepath "${ARG_INPUT_DIR}/${ARG_INPUT_FN}")
    set (output_icns "${basepath}.icns")
    set (iconset "${basepath}.iconset")

    set (deplist "")

    foreach (size IN ITEMS 16 32 128 256 512)
        math (EXPR size2x "2 * ${size}")

        set (ipath "${iconset}/icon_${size}x${size}.png")
        set (ipath2x "${iconset}/icon_${size}x${size}@2x.png")

        list (APPEND deplist "${ipath}" "${ipath2x}")

        add_custom_command (
            OUTPUT "${ipath}"
            COMMAND "${inkscape_exe}" ARGS -z -e "${ipath}" -w ${size} -h ${size} "${sourceimg}"
            MAIN_DEPENDENCY "${sourceimg}"
            COMMENT "ICNS resize: ${ipath}"
            VERBATIM)

        add_custom_command (
            OUTPUT "${ipath2x}"
            COMMAND "${inkscape_exe}" ARGS -z -e "${ipath2x}" -w ${size2x} -h ${size2x} "${sourceimg}"
            MAIN_DEPENDENCY "${sourceimg}"
            COMMENT "ICNS resize: ${ipath2x}"
            VERBATIM)
    endforeach ()

    add_custom_command (
        OUTPUT "${output_icns}"
        COMMAND iconutil ARGS --convert icns --output "${output_icns}" "${iconset}"
        MAIN_DEPENDENCY "${sourceimg}"
        DEPENDS ${deplist}
        COMMENT "ICNS: ${output_icns}"
        VERBATIM)

    if (ARG_OUTPUT)
        set ("${ARG_OUTPUT}" "${output_icns}" PARENT_SCOPE)
    endif ()
endfunction ()

function (make_icns)
    cmake_parse_arguments (
        ARG
        ""             # Boolean args
        "INPUT;OUTPUT" # List of single-value args
        ""             # Multi-valued args
        ${ARGN})

    if (NOT ARG_INPUT)
        message (FATAL_ERROR "INPUT is required")
    endif ()

    if (NOT IS_ABSOLUTE "${ARG_INPUT}")
        get_filename_component (ARG_INPUT "${ARG_INPUT}" ABSOLUTE BASE_DIR "${CMAKE_CURRENT_SOURCE_DIR}")
    endif ()

    if (NOT EXISTS "${ARG_INPUT}")
        message (FATAL_ERROR "INPUT does not exist: ${ARG_INPUT}")
    endif ()

    file (RELATIVE_PATH ARG_INPUT "${CMAKE_CURRENT_SOURCE_DIR}" "${ARG_INPUT}")

    get_filename_component (ARG_INPUT_EXT "${ARG_INPUT}" EXT)
    if ("${ARG_INPUT_EXT}" STREQUAL ".png")
        make_icns_from_png (INPUT "${ARG_INPUT}" OUTPUT child_output)
    elseif ("${ARG_INPUT_EXT}" STREQUAL ".svg")
        make_icns_from_svg (INPUT "${ARG_INPUT}" OUTPUT child_output)
    else ()
        message (FATAL_ERROR "INPUT must refer to a .png or .svg, but a ${ARG_INPUT_EXT} was provided")
    endif ()

    if (ARG_OUTPUT)
        set ("${ARG_OUTPUT}" "${child_output}" PARENT_SCOPE)
    endif ()
endfunction ()

-1

हैलो, अपनी आवश्यकताओं के लिए मैंने एक छोटी बूंद बनाई जो एक फ़ोल्डर में खोज करने के लिए अकेले या माउस को ड्रैग और ड्रॉप करने में काम करती है (मैं फ़ोल्डर्स तक सीमित हूं क्योंकि सभी आइकन के वॉल्यूम पर खोजों में बहुत समय लग सकता है)। इसलिए ड्रैग एंड ड्रॉप में आप फोल्डर या एप्लिकेशन को ड्रॉप कर सकते हैं, ऐसी कोई भी चीज जिसमें आइकन हो सकता है। आइकनसेट मूल आइकन का नाम रखता है, इसे एक निर्देशिका "/ एएकोइकॉन" और आइकन के मार्ग में रखा जाता है। फ़ोल्डर में उदाहरण "/ aaicones यदि आप xcode.app सबमिट करते हैं, तो आपको" /aaaicones/Applications/xcode.app/access.iconset "और /aaaicones/Applications/xcode.ac/access.icns (पुनः प्राप्त आइकन) मिल जाएगा।" एक पाठ फ़ाइल हो जहां यह आइकन के पूर्ण पथ का पता लगाया जाता है, और इसी आइकॉन उदाहरण के लिए पथ "/Applications/xcode.app/Contents/Applications/Instenders"।

on open draggedItems
    set input to draggedItems
    set fich to draggedItems


    set media to {}

    set theInfo to {}

    set n to "0"
    repeat with currentItem in draggedItems
        set dirchoisi to POSIX path of fich
        if ".icns" is not in dirchoisi then
            if "Volumes" is not in dirchoisi then

                set origi to do shell script "echo   /aaaicones" & dirchoisi
                set fich to do shell script "echo " & fich & " | xxd -p -c 100000 | sed 's#3a#2f#g' | xxd -r -p | sed 's#" & dirchoisi & "#" & "/aaaicones" & dirchoisi & "#g' | xxd -p -c 100000 | sed 's#2f#3a#g' | xxd -r -p"
                tell application "Finder"
                    if exists (folder fich) then
                        set nn to "0"
                        repeat with nn from 1 to 5
                            set origi to do shell script "echo  " & origi & "/" & " | sed 's#//#" & nn & "/" & "#'"
                            set fich to do shell script "echo " & fich & " | sed 's#:aaaicones*.*#" & origi & "#'" & " | xxd -p -c 100000 | sed 's#2f#3a#g' | xxd -r -p"

                            if not (exists folder (fich as Unicode text)) then
                                try
                                    set origi to do shell script "echo  " & origi
                                    exit repeat
                                end try
                            end if
                        end repeat
                    end if
                end tell
                tell application "Finder"
                    if not (exists folder (fich as Unicode text)) then
                        do shell script "mkdir -p -m 0777 " & quoted form of origi
                    end if
                end tell
                try
                    set theInfo to do shell script "find " & (quoted form of dirchoisi) & " -name *.icns "
                end try




                set AppleScript's text item delimiters to return

                set theList to text items of theInfo

                set AppleScript's text item delimiters to ""

                set n to count theList
                repeat with i from 1 to n
                    if "Volumes" is not in item i of theList then
                        set end of media to item i of theList
                    end if
                end repeat
                set n to count media
                set cheminicns to do shell script " > " & quoted form of (origi & "aalisticones.txt") & " |  chmod 777 " & quoted form of (origi & "aalisticones.txt")
                set cheminicns to do shell script "ls " & quoted form of (origi & "aalisticones.txt")

                tell application "Finder"
                    set letext to (POSIX file cheminicns as alias)
                    set label index of letext to 2
                end tell



                repeat with i from 1 to n

                    set hdd to item i of media
                    try

                        set input to do shell script "echo   " & hdd & " | sed 's#//#/#g; s#(#\\(#g;s#)#\\)#g' "
                        do shell script "echo   " & quoted form of input & " >>" & quoted form of cheminicns
                        set png to do shell script "echo " & quoted form of input & " | sed 's#.*/##' "

                        do shell script "cp -f " & quoted form of input & " " & quoted form of origi
                        set input to do shell script "iconutil -c iconset  " & quoted form of (origi & png)
                        do shell script "echo   " & quoted form of (origi & png) & " | sed 's#.icns#.iconset#' >>" & quoted form of cheminicns
                    end try
                end repeat
                tell application "Finder"
                    if exists (folder fich) then
                        open fich
                    end if
                end tell

            end if
        else

            set input to do shell script "echo   " & dirchoisi & " | sed 's#//#/#g; s#(#\\(#g;s#)#\\)#g' "
            set png to do shell script "echo " & quoted form of input & " | sed 's#.*/##' "
            set origi to do shell script "echo " & quoted form of ("/aaaicones/aIconeseule/" & input) & " | sed 's#/Volumes/##; s#" & quoted form of png & "##'"
            do shell script "mkdir -p -m 0777 " & quoted form of origi
            do shell script "echo   " & quoted form of input & " >>" & quoted form of origi & "aalisticones.txt"

            do shell script "cp -f " & quoted form of input & " " & quoted form of origi
            set input to do shell script "iconutil -c iconset  " & quoted form of (origi & png)
            do shell script "echo   " & quoted form of (origi & png) & " >>" & quoted form of origi & "aalisticones.txt"
        end if
    end repeat
end open
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.