আইকনুটিল ব্যবহার করে ম্যানুয়ালি আইকন ফাইলগুলি কীভাবে তৈরি করবেন?


106

আমি আমার অ্যাপ্লিকেশনটি যাচাই করার সময় আমি এই ত্রুটিটি পেয়েছি:

অ্যাপ্লিকেশন বান্ডেলে আইসিএনএস ফর্ম্যাটে একটি আইকন থাকে না, এতে দুটি 512x512এবং একটি 512x512@2xচিত্র থাকে।

আমি ইমজি 2 আইএনএস অ্যাপ্লিকেশন দিয়ে আইকন আইকন তৈরি করতে ব্যবহার করি এবং আজ অবধি এটি সর্বদা সঠিকভাবে কাজ করেছে worked তবে এখন আমি সেই ত্রুটিটি পাচ্ছি এবং এটি কার্যকর করার কোনও উপায় নেই। আমি দুটি পিএনজি ফাইল একসাথে ( 512x512এবং 1024x1024) ইমজি টিকনে রাখার চেষ্টা করেছি তবে আমি সবসময় ত্রুটি পাই get আমি অ্যাপলের ওএস এক্স হিউম্যান ইন্টারফেস গাইডলাইন-র নির্দেশাবলীও অনুসরণ করার চেষ্টা করেছি কিন্তু যখন আমি আইকন সেটগুলি তৈরি করার চেষ্টা করি তখন আমি এই টার্মিনাল ত্রুটিটি পাই:

-বাশ: অপ্রত্যাশিত টোকেন 'নিউলাইন' এর নিকটে সিনট্যাক্স ত্রুটি

আমি টার্মিনাল কমান্ডগুলির সাথে খুব ভাল নই তাই সম্ভবত আমি কিছু ভুল করছি। আমি লিখেছিলাম:

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

যদি কেউ সহায়তা করতে পারে তবে এটির খুব প্রশংসা হবে। ধন্যবাদ, ম্যাসি


আমি একটি অ্যাপ্লিকেশন তৈরি করেছি যা এই সহজ করতে আইকনটিউলে মোড়না দেয়: hobbyistsoftware.com/icontool
কনফিউজড ভোরলন

উত্তর:


63

নিম্নলিখিত নির্দেশাবলী ( লিঙ্ক ) চেকআউট করুন :

আইকন ফাইলটি ম্যানুয়ালি আইকন ফাইল তৈরি করতে ব্যবহার করুন

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যদিও আপনার সম্ভবত ব্যবহারের দরকার নেই । আপনি কেবলমাত্র আপনার প্রকল্পে আইকনসেটটি যুক্ত করতে পারেন এবং এক্সকোডটিকে বিল্ডের অংশ হিসাবে এটি আপনার জন্য রূপান্তর করতে দিন। এটি তাত্ক্ষণিকভাবে পূর্ববর্তী (খুব সংক্ষিপ্ত) বিভাগে আচ্ছাদিত: বিকাশকারী
অ্যাপ্লিকেশন / লাইব্রেরি / ম্যাক / ডকুমেন্টেশন / গ্রাফিকস অ্যানিমেশন/…

@ অ্যান: আইকনুটিল কমান্ড ব্যতীত কেবল ওএস সংস্করণগুলির সাথে অন্তর্ভুক্ত রয়েছে যা আইসিএনএস ফাইল ব্যবহার করে না ... ওএস 10.6.8 ভি 1.1 ব্যবহার করে এমন আমাদের জন্য কোনও ভালবাসা নেই ... এটি আরও খারাপ 'আমাদের পথ বা মহাসড়ক' ব্যবহারকারীদের চেয়ে ডেভসের জন্য।
হেনরিক এরল্যান্ডসন

@ অ্যান: যে কাজ করেছে ... অনেক অনেক ধন্যবাদ! (আমার প্রশ্নটি সঠিকভাবে সেট করার জন্য ধন্যবাদ) thanks শান্তি, মাসি
নীল

@ হেনরিকএরল্যান্ডসন: ম্যাক ওএস এক্স এর সমস্ত সংস্করণ .icns ফাইলগুলি ব্যবহার করে, 10.0 এ ফিরে আসে।
পিটার হোসি

10
নিম্নলিখিত ফাইলগুলির অস্তিত্ব থাকতে হবে: আইকন_16x16.png, चिन्ह_16x16@2x.png, আইকন_32x32.png, আইকন_32x32@2x.png, আইকন_28x128.png, আইকন_28x128@2x.png, আইকন_256x256.png, আইকন_256x256@2x.png। @ 2x ফাইলগুলি প্রতি ইঞ্চিতে 144 পিক্সেল সংরক্ষণ করা উচিত এবং অন্যগুলি প্রতি ইঞ্চিতে 72 পিক্সেল সংরক্ষণ করা উচিত।
কারমিন

284

এখানে একটি 1024x1024 পিএনজি ("আইকন 1024.png" নাম করা হয়েছে) প্রয়োজনীয় আইকন ফাইলে রূপান্তর করতে এখানে একটি স্ক্রিপ্ট রয়েছে। এটির ফোল্ডারে যেখানে আপনার পিএনজি ফাইলটি টার্মিনালে "সিডি" থাকে সেই ফোল্ডারে যেখানে "ক্রিয়েটিকএনএসএসসিআরসি" নামে একটি ফাইল করা যায় সেভ করুন এবং কল করার জন্য "উত্স ক্রিয়েটিকএনএস.এসসিআর" টাইপ করুন:

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
চমত্কার। আমি ডেস্কটপে আইকন 1024.png রেখেছি, এবং কেবল আপনার কোডটি চালাচ্ছি এবং এটি সব শেষ হয়েছে
লজিক

2
এটি কি সম্ভব যে এই নিখুঁত ছোট স্ক্রিপ্টটি এল ক্যাপ্টিনে ভেঙে গেছে? আমার ম্যাকটি 10.11.3 এ আপগ্রেড করা হয়েছে এবং এই স্ক্রিপ্টটি এখন "ত্রুটি: অসমর্থিত চিত্র ফর্ম্যাট" ফিরিয়ে দেয় "/ ব্যবহারকারীর / আইকনস্ক্রিপ্ট / মাই আইকন-osx.iconset: ত্রুটি: 'আইকন' নামের ভেরিয়েন্টে কোনও চিত্র সংস্থান নেই।" তারপরে "MyIcon-osx.iconset: ত্রুটি: আইসিএনএস তৈরি করতে ব্যর্থ।" ম্যাকের জন্য একই স্ক্রিপ্ট এবং .png ফাইল ব্যবহার করে চেষ্টা করা হয়েছে যা এল ক্যাপিটেনের কাছে আপডেট হয় না এবং এটি সর্বদা হিসাবে সেখানে কাজ করে ... = (
রানলার্নস

1
হ্যাঁ @ হেনরি, আমি মন্তব্যটি পরিষ্কার করার চেষ্টা করার জন্য ফোল্ডারের নামগুলি সরিয়ে দিচ্ছি, আমি টার্মিনালে এটি ফোল্ডারের মধ্যে চালিয়ে যাচ্ছি যেখানে এসসিআর স্ক্রিপ্ট এবং আইকন রয়েছে। পূর্বের চেয়ে একমাত্র জিনিস হ'ল এল ক্যাপিটান বনাম ইয়োসেমাইট ... আমি ওএসকে সাফল্যের সাথে আপডেট করার আগে স্ক্রিপ্টটি আক্ষরিকভাবে ব্যবহার করেছি এবং তারপরে আপডেট করার পরে ডানদিকে (একই ফোল্ডারে, একই টার্মিনাল কমান্ডগুলি) এবং এটি এখন সেই ত্রুটি ফিরিয়ে দেয়। এল ক্যাপ্টেন এ নিয়ে আপনার কী সাফল্য আছে?
র‌্যানলার্নস

3
গুরুত্বপূর্ণ বিষয়গুলি লক্ষ্য করুন: আপনার আইকন চিত্রের ফাইলের নামগুলি অবশ্যই "আইকন_" দিয়ে শুরু করা উচিত । ছবিগুলির অবশ্যই একটি আলফা চ্যানেল থাকা উচিত। প্রয়োজনে আপনি ইমেজম্যাগিকের সাথে একটি আলফা চ্যানেল যুক্ত করতে পারেন convert abc.png -define png:color-type=6 abc_with_alpha.png
ডেভিড গ্রেসন

1
ঈশ্বর. একটি ইলেকট্রন অ্যাপ্লিকেশন তৈরি করা এবং আইকনগুলি নিয়ে কাজ করা এমন ব্যথা হয়ে উঠেছে। সমস্ত ব্লগ টিউটোরিয়াল পুরানো অনলাইন ইউটিলিটিগুলিকে নির্দেশ করে। আপনার সহজ স্ক্রিপ্ট এখানে স্ট্যাকারফ্লোতে সবেমাত্র আমার দিনটি তৈরি করেছে। ধন্যবাদ!
নেলসনেঞ্জো

26

হাই-রেস- PNGইমেজটিকে বিভিন্ন লো-রেজোলিউশন কপির একটি পিইয়েডে রূপান্তর করতে সমস্ত ধরণের স্ক্রিপ্ট ব্যবহার করার সময় খুব সহজেই মনে হতে পারে (এবং এটি সত্যই), একথাও ভুলে যাওয়া উচিত নয় যে এই ধরণের স্বয়ংক্রিয় আকার পুনরায় আকার দেওয়ার ফলে অসম্পূর্ণ চিত্রগুলি রেন্ডার হবে ।

রেজোলিউশন কম - আইকন ঝাপসা!

মানে আমিও ভালোবাসি imagemagick, তবে এই কাজের জন্য এটি সঠিক সরঞ্জাম নয়!

পরিবর্তে, আপনি সবসময় কিছু ভেক্টর ফর্ম্যাটে একটি লোগো আপনার ডিজাইনার থেকে উদাহরণস্বরূপ অনুরোধ করা উচিত, SVG। এটি হাতে রেখে, আপনি PNGসমস্ত প্রয়োজনীয় রেজোলিউশনে ম্যানুয়ালি নিখুঁত ফাইলগুলি প্রস্তুত করতে পারেন এবং তারপরে একটি একক তৈরি করতে পারেন.icns ফাইল তৈরি করতে পারবেন যা আপনার অ্যাপ্লিকেশন আইকনটিকে প্রতিটি একক স্ক্রিনে সুন্দর দেখাবে, একটি সস্তা আইফোন এসই থেকে সর্বশেষের কিছু উচ্চ-শেষ রেটিনা প্রদর্শন আইম্যাক। এই পিএনজিগুলি তৈরি করতে আপনি ফটোশপ, জিআইএমপি বা আপনার পছন্দের কোনও অন্য সরঞ্জাম ব্যবহার করতে পারেন।

2020-র হিসাবে সর্বশেষ অ্যাপলের হিউম্যান ইন্টারফেস নির্দেশিকা থেকে আপনার নিম্নলিখিত 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 |
+---------------------+--------------------+--------------+

সমস্ত পিএনজি ফাইল প্রস্তুত হয়ে যাওয়ার পরে এগুলি .iconsetএক্সটেনশন সহ কিছু ডিরেক্টরিতে রাখুন ( Logos.iconsetউদাহরণস্বরূপ) এবং নিম্নলিখিতগুলি থেকে Terminal:

iconutil --convert icns Logos.iconset

এই কমান্ডটি কার্যকর করার পরে যদি কোনও ত্রুটি না ঘটে থাকে, তবে সমস্ত ফাইল সঠিকভাবে প্রক্রিয়া করা হয়েছিল এবং আপনি Logos.icnsএকই ডিরেক্টরিতে ফাইলটি পেয়েছিলেন , আপনার অ্যাপ্লিকেশনটির জন্য সমস্ত সুন্দর খাস্তা লোগো রয়েছে যা কোনও আধুনিক পর্দার জন্য উপযুক্ত হবে।


16

একটি কমান্ড-লাইন নোড মডিউল রয়েছে যা একটি পিএনজি ফাইলকে আইকনসেট ডিরেক্টরিতে রূপান্তর করার সমস্ত কাজ করে:

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

9
আর সমর্থিত নয়। :(
জামেস্ক্যাম্পবেল

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
এটি প্রদর্শনের জন্য ধন্যবাদ, এর জন্য ধন্যবাদ আমি পিএনজি পেতে আইকন থেকে বিপরীত করতে সক্ষম হয়েছি! :)
নোটিডার্ট

9

অতিরিক্ত মন্তব্য, যখন আপনি .icns ফাইলটি তৈরি করবেন, আপনার সমস্ত পিক ফাইলের উপসর্গ "আইকন_ " দিয়ে নতুন নামকরণ করা দরকার , অন্যথায়, আইকনটিলে ত্রুটি বার্তাটি ব্যর্থ হবে: ".কনসেট: ত্রুটি: আইসিএনএস উত্পন্ন করতে ব্যর্থ হয়েছে" " যা মোটেই তথ্যবহুল নয়।


7

@ হেনরি হিসাবে একই (উপরের মন্তব্য) তবে যুক্তি হিসাবে পিএনজি ফাইল নাম নেয় এবং আইসিএনএসকে একই নামে আউটপুট করে।

দ্রষ্টব্য: পিএনজি ফাইলের নামটি কেবলমাত্র 1 পয়েন্টের আলাদা এক্সটেনশান, অর্থাৎ xpto.png হবে।

সুতরাং, নীচে কোডটি সংরক্ষণ করুন যেখানে আপনার পিএনজি ফাইল রয়েছে সেই ফোল্ডারে "CreateICNS.src" নামে একটি দায়ের করা ফাইল to

কোড:

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

ব্যবহারবিধি :

তারপরে টার্মিনালে একই ফোল্ডারে "সিডি" লিখে টাইপ করুন:

source CreateICNS.src {PNG filename}

যেখানে P PNG ফাইলের নাম your আপনার পিএনজি ফাইলের নাম, যেমন xpto.png।

যদি আপনার ফাইলটির নাম রাখা হয় abc.png আপনি এটি ব্যবহার করবেন:

source CreateICNS.src abc.png

অসাধারণ! মৃত সরল :) সম্ভবত এটি একটি .sh / লিপি তৈরি করুন এটি আরও বেশি তৈরি করবে :) ধন্যবাদ!
গুয়ামবার্গ রিবেইরো

6

আমি একটি এসভিজি ফাইল থেকে আইকন তৈরির জন্য একটি বাশ স্ক্রিপ্ট লিখেছি:

#!/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
আপনি যদি ম্যানুয়ালি জিনিসগুলি পছন্দ করেন তবে আপনার কোনও কম্পিউটারের দরকার নেই।
dardo82

5

মৃত সরল .png ic .icns

  1. আইকনমেকার.অ্যাপ ডাউনলোড করুন - এটি কেবলমাত্র একটি। অ্যাপ্লিকেশনটি কামড়াবে না
  2. আপনার সর্বাধিক তৈরি করা আইকনমেকার.এপটিতে আপনার .png টেনে টেনে আনুন।

আরও তথ্য : http://eon.codes/blog/2016/12/06/Creating-an-app-icon/

iconutilউত্স .png আকার সম্পর্কে উচ্চ সিয়েরা আপডেট এখন আরও কঠোর। লাফ দেওয়ার পরে ব্লগ পোস্টে এটি সম্পর্কে আরও। ✌️


3

আমি আমার অ্যাপ্লিকেশনটি যাচাই করার সময় আমি এই ত্রুটিটি পেয়েছি:

অ্যাপ্লিকেশন বান্ডলে আইসিএনএস ফর্ম্যাটে একটি আইকন থাকে না, এতে 512x512 এবং 512x512 @ 2x চিত্র উভয়ই থাকে।

আমি টার্মিনাল কমান্ডের সাথে খুব ভাল নই এবং তাই সম্ভবত আমি কিছু ভুল করছি। আমি লিখেছিলাম:

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

একটি বিষয় হিসাবে, আমি অ্যানের উত্তরের একটি মন্তব্যে যেমন উল্লেখ করেছি, সম্ভবত আপনার আইকনটিল ব্যবহার করার দরকার নেই। আপনার প্রকল্পে আইকনসেটটি কেবল যুক্ত করতে সক্ষম হবেন এবং এক্সকোডটিকে বিল্ডের অংশ হিসাবে আপনার জন্য রূপান্তর করতে দিন।

যেভাবেই হোক, এটি আপনার সমস্যা হতে পারে:

আমি দুটি পিএনজি ফাইল টগিটার (512x512 এবং 1024x1024) রাখার চেষ্টা করেছি ... তবে আমি সবসময় ত্রুটি পাই।

1024 বাই 1024 পয়েন্ট আকার নেই। 1024 বাই 1024 পিক্সেল উপাদান (যা মাউন্টেন সিংহের আগে 1024 পয়েন্ট ছিল) এখন 512 দ্বারা 512 পয়েন্ট @ 2x এর জন্য ব্যবহৃত হয়।

আপনার পিএনজি ফাইলটির যথাযথ নামকরণ করতে হবে: icon_512x512@2x.png


3

অ্যাপলের পুরানো আইকন রচয়িতা সংস্করণ 2.2 ঠিক ঠিক কাজ করে, আপনি কেবল এটি .ICNS খুলুন, 1024x1024 বোতাম টিপুন এবং আপনার চিত্র যুক্ত করুন।


আমি মূল প্রশ্নকারীকে জিজ্ঞাসা করতে পারি না, তবে এই উত্তরটি আমার যা প্রয়োজন তা ঠিক । ধন্যবাদ!
পেস্টোফ্যাগস

3
অ্যাপল ডক্স বলছে "দ্রষ্টব্য: আইকন রচয়িতা ব্যবহার করবেন না — এটি উচ্চ-রেজোলিউশন আইকন ফাইল তৈরি করতে পারে না।" অর্থাৎ @ 2x আইকনগুলি সেভাবে করা যায় না।
ক্লে ব্রিজ

আইকন রচয়িতা সূক্ষ্মভাবে কাজ করছে বলে মনে হচ্ছে, এটি এক্সকোড প্যাকেজের জন্য গ্রাফিক্স সরঞ্জামগুলির অংশ হিসাবে অ্যাপল বিকাশকারী সাইটটি আলাদাভাবে প্রেরণ করা হবে। এখানেও দেখুন ।
মিচিয়েল কাউ-এ-তেজো

2

@ daro82 এর শেল কোডটি ভাল এবং কাজ করেছে। এখানে শ এর মধ্যে একটি সহজতর (সমস্ত * নিক্সের জন্য) এবং দ্রুত (যেমন এটি সত্যই গুরুত্বপূর্ণ):

#!/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

আমার স্ক্রিপ্টে পরিবর্তনের জন্য ধন্যবাদ, আমি কেন zsh ব্যবহার করেছি তা এখনও নিশ্চিত নই
dardo82

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

চালান iconutil -c icns Icon.iconset

বিঃদ্রঃ

  • আইকন.ইকনসেট একটি ফোল্ডার
  • ছোট হাতের নাম দিয়ে শুরু করুন icon_
  • আপনি যখন Icon.icnsসঠিক চিত্র সহ দেখেন , আপনি জানেন যে এটি কাজ করে

এখানে চিত্র বর্ণনা লিখুন


কেন 3x? অ্যাপলের দরকার নেই।
নিউরোট্রান্সমিটার

1

এখানে দুটি কার্য রয়েছে:
- 10 টি সঠিক আইকন ফাইল তৈরি করুন
- আপনার এক্সকোড প্রকল্পটি সঠিকভাবে ব্যবহার করার জন্য পান

যেহেতু আমার এই দু'টি কাজ নিয়েই দীর্ঘকালীন সমস্যা ছিল এবং আমি কী করতে যাচ্ছি তা যখন 'দেখছি না' পছন্দ করি না, সতর্কতার জন্য এখানে একটি পথ:

10 টি সঠিক আইকন ফাইল তৈরি করুন:
আমি হেনরি থেকে উপরের স্ক্রিপ্টটি ব্যবহার করেছি: এটি এখনও 'সি' কমান্ড সহ হাইসিয়ারার এবং এক্সকোড 9.2 এর জন্য কাজ করে।
আইকন ফাইলটি আমি পেয়েছি, এটি ফাইন্ডার / কুইকলুক এবং প্রিভিউতে কেবলমাত্র একটি আইকন আকার হিসাবে প্রদর্শিত হয়েছিল 10 টির মধ্যে 8 টি মাত্র আকার দেখায়।
সুতরাং আমি টার্মিনালটি ব্যবহার করেছি, সিডি সহ আমার ফোল্ডারে গিয়ে কমান্ডটি ব্যবহার করেছি: আইকনসেট ফাইলটি আইকনসেট ফোল্ডারে ফিরিয়ে আনার জন্য সদ্য তৈরি আইকন ফাইলটিতে আইকনটি-সি আইকনসেট (আইকনস ফাইল নাম) এবং - দেখুন এবং দেখুন - আমি দেখতে পেলাম আমার নতুন নির্মিত 10 আইকন ফাইল। আইকনসেট ফোল্ডারে কুইক লুক ব্যবহার করে (এবং স্লাইডারের সাহায্যে পুরো স্ক্রিন মোড ব্যবহার করে) সেগুলি দেখতে পেলাম যে সমস্ত আকারগুলি আসলে খুব ভাল দেখাচ্ছে।

একদিকে যেমন: তারা পিএসইয়ের সাথে আমার আকার পরিবর্তনগুলির চেয়ে আরও ভাল দেখায়, সম্ভবত পিএসইতে সমস্ত আকার পরিবর্তন করার বিকল্প নিয়ে খেলতে আমি সময় নিইনি বলেই। আপনি যদি পিএসই ব্যবহার করেন তবে নিশ্চিত করুন যে আপনার পিএনজি ফাইলগুলি রঙের প্রোফাইল ছাড়া সংরক্ষণ করা হয়েছে। এছাড়াও, আমার অজ্ঞতা স্বীকার করে, আমার কাছে একটি 256x256 @ 2 ফাইল 512x512 ফাইলের মতো - same২ ডিপিআই উভয়ই। উপরের 144 ডিপিআই মন্তব্য অনুসরণ করার চেষ্টা করা আমার পক্ষে কার্যকর হয়নি।

আপনার এক্সকোড প্রকল্পটি সেগুলি সঠিকভাবে ব্যবহার করার জন্য পান:
প্রথমে আমি আমার সমস্ত ফলপ্রসূ প্রচেষ্টা এক্সকোডের মধ্যে মুছে ফেলেছিলাম এবং গিট সংগ্রহস্থলের জন্য একটি পরিষ্কার সংস্করণ প্রতিশ্রুতিবদ্ধ করেছি (যা চতুর হবে, প্রথমে একটি পরিষ্কার সংস্করণ করা উচিত ছিল - আমি দৃ fra়ভাবে আইকনটি শুরু করার আগে অতিরিক্ত ওডিসি)।
আমি এটিও নিশ্চিত করেছিলাম যে তথ্য.পলিট ফাইলটিতে 'আইকন ফাইল' এন্ট্রির সাথে কোনও পয়েন্টার যুক্ত নেই এবং আমার সাধারণ প্রকল্প সেটিংসে আমি অ্যাপ আইকনগুলির জন্য অ্যাপ আইকন বেছে নিয়েছি।
তারপরে আমি একটি সম্পদ.সেট ক্যাটালগ এবং সম্পদ ক্যাটালগের মধ্যে ওএসের জন্য একটি নতুন 'অ্যাপ আইকনস এবং লঞ্চ চিত্রগুলি' অ্যাপিকন ফোল্ডার যুক্ত করেছি।
তারপরে আমি আইকনসেট ফোল্ডার থেকে প্রত্যেকটি পিএনজি ছবি ফাইলকে সম্পর্কিত অ্যাপিকোন স্পেসহোল্ডারের মধ্যে অনুলিপি (টেনে আনুন এবং বিকল্প দিয়ে চাপুন) তাই আবারও আমি দেখতে পেলাম কী হচ্ছে। এক্সকোড এটিকে আইকন ফাইলগুলিতে রূপান্তরিত করেছিল, বা হতে পারে - আইকন ফোল্ডার থেকে প্রাপ্ত আমার আইকনসেট ফোল্ডার হিসাবে - ফাইল ফর্ম্যাটগুলি গ্রহণ করা হয়েছিল।

তারপরে সংরক্ষণাগার এবং বৈধকরণ এবং আপলোড বা যাচাইকরণের ক্ষেত্রে কোনও ত্রুটি থাকবে না।


বিন্যাস করা! আপনার উত্তরটি ভাল হতে পারে তবে অপঠনযোগ্য। অনুচ্ছেদ এবং গাড়ীর রিটার্ন ব্যবহার করুন।
নিক 3500

0

আমার এটি দরকার ছিল, তবে সিএমকেকের জন্য। আমি এটি একটি এসভিজি দেওয়ার বিকল্পও চেয়েছিলাম।

সংক্ষিপ্তসারটি এখানে: https://gist.github.com/Qix-/f4090181e55ea365633da8c3d0ab5249

এবং সিএমকে কোড:

# 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

হ্যালো, আমার প্রয়োজনের জন্য আমি একটি ফোঁটা তৈরি করেছি যা ফোল্ডারে সন্ধান করতে একা আইকন বা আইকনগুলি টেনে আনার জন্য কাজ করে (সমস্ত আইকনের ভলিউমের অনুসন্ধানে আমি অনেক সময় নিতে পারি বলে আমি ফোল্ডারগুলিতে সীমাবদ্ধ)। সুতরাং ড্রাগ এবং ড্রপ এ আপনি ফোল্ডার বা অ্যাপ্লিকেশন, আইকন থাকতে পারে এমন কিছু ড্রপ করতে পারেন। তৈরি করা আইকনসেটটি মূল আইকনের নাম বহন করে, এটি একটি ডিরেক্টরি "/ এএইকোনস" এবং আইকনের পথে রাখে। "/ এএইকোনস" ফোল্ডারের উদাহরণ আপনি যদি xcode.app জমা দেন তবে আপনি "/aaaicones/Applications/xcode.app/access.iconset" এবং /aaaicones/Applications/xcode.app/access.icns (পুনরায় তৈরি আইকন) পাবেন একটি পাঠ্য ফাইল হোন যেখানে এটি আইকনগুলির পুরো পথ এবং এটি সম্পর্কিত আইকনসেট উদাহরণ "/ অ্যাপ্লিকেশনস / এক্সকোড.এপ / কনটেন্টস / অ্যাপ্লিকেশনস / অন্তঃসত্ত্বার পথ" সন্ধান করে।

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
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.