Was ist eine ICNS-Datei?

Eine ICNS-Datei ist ein Apple-Container für Ressourcen von Anwendungssymbolen. Sie kann mehrere Symbolgrößen, Auflösungen und Pixeldarstellungen enthalten, die macOS verwendet.

So funktionieren ICNS-Dateien

Eine ICNS-Datei bündelt die Darstellungen eines macOS-Symbols für unterschiedliche Anzeigegrößen und Pixeldichten. In der Implementierung der Leseroutine von Pillow beginnt die Datei mit den vier Bytes icns und einer Gesamtlänge im Big-Endian-Format. Darauf folgen Elemente, die jeweils mit einem Typcode aus vier Zeichen und einer Längenangabe beginnen. Der Typcode kennzeichnet die Darstellung: ic07 steht beispielsweise für das Symbol mit 128 Punkt und ic10 für das Symbol mit 512 Punkt bei zweifacher Skalierung. Apples Werkzeuge erstellen die Datei aus einem Ordner mit der Erweiterung .iconset, der PNGs enthält, deren Namen Punktgröße und Skalierung angeben. Der Befehl iconutil konvertiert diesen Ordner in eine ICNS-Datei und zurück. Laut Apples archivierter Anleitung aus dem Jahr 2012 konvertiert Xcode 4.4 einen iconset-Ordner in einem Projekt automatisch beim Erstellen des Builds. Die Datei Info.plist des Bundles benennt die Symboldatei mithilfe des Schlüssels CFBundleIconFile.

Wichtige Fakten

  1. Welche Größen gehören in die Datei? Apples iconset-Konvention verwendet fünf Punktgrößen (16, 32, 128, 256 und 512), jeweils mit Standardskalierung und der Skalierung @2x. Das größte Bild misst somit 1024 mal 1024 Pixel und heißt icon_512x512@2x.png. Der Satz muss nicht vollständig sein: Laut Apples Anleitung wählt das System für Größen, die Sie nicht bereitstellen, die beste Darstellung aus. Dort steht auch, dass icon_16x16@2x.png und icon_32x32.png trotz gleicher Pixelzahl nicht gleichwertig sind, da sie auf dem Bildschirm in unterschiedlichen Größen erscheinen und möglicherweise einen anderen Detailgrad benötigen. Diese Anleitung stammt aus dem Jahr 2012 und befindet sich in Apples Dokumentationsarchiv.
  2. Was enthält jedes Element? Das hängt vom Typcode ab, daher muss ein Parser mehr als eine Nutzdatenform verarbeiten. In der Leseroutine von Pillow enthalten die Elemente von ic07 bis ic14 und von icp4 bis icp6 jeweils ein vollständiges PNG- oder JPEG-2000-Bild. Ältere Typen wie is32 und il32 enthalten dagegen RGB-Daten, entweder roh oder lauflängencodiert, und den Alphakanal in einem separaten Maskenelement mit 8 Bit wie s8mk oder l8mk. Das ist für Werkzeuge relevant, die eine ICNS-Datei als Bildquelle wiederverwenden: Laut der Dokumentation von electron-builder extrahiert das Werkzeug den größten eingebetteten PNG-Frame, wenn eine ICNS-Datei als Symbolquelle für eine andere Plattform dient. Eine Person berichtete von einem Linux-Build, der mit „Could not extract a PNG frame from ICNS file“ abbrach, nachdem das Werkzeug seinen Symbolkonverter gewechselt hatte. Als Umgehungslösung stellte sie ein PNG für den Linux-Build bereit. Aus dem Bericht geht nicht hervor, was in dieser Datei den Fehler verursachte. Eine Person aus dem Wartungsteam erklärte später, eine neue Version des Konverters sollte ihn beheben.
  3. Wie erstelle oder untersuche ich eine solche Datei? Unter macOS konvertiert iconutil -c icns einen Ordner mit der Erweiterung .iconset in eine ICNS-Datei, und iconutil -c iconset konvertiert eine ICNS-Datei zurück in ihre PNGs. Laut Apples Anleitung müssen die iconset-Bilder quadratisch sein und ihre Abmessungen den Dateinamen entsprechen. Außerhalb von macOS kann Pillow seit Version 8.3.0 auf jedem Betriebssystem ICNS-Dateien schreiben. Seine Schreibroutine skaliert das zu speichernde Bild für jede Größe, die Sie nicht mit append_images übergeben, auf ein Quadrat. Der Speichercode prüft dabei nicht, ob die Quelle quadratisch oder 1024 Pixel breit ist. Er ordnet die Bilder in append_images anhand der Pixelbreite zu, sodass zwei Elemente mit derselben Pixelgröße dasselbe Bild verwenden. Er schreibt nur die Elemente von ic07 bis ic14 mit Breiten von 32 bis 1024 Pixel: Das Bild mit 32 Pixel wird als Symbol mit 16 Punkt bei zweifacher Skalierung gespeichert. Ein Element für das Symbol mit 16 Punkt oder 32 Punkt bei Standardskalierung fehlt. Apple empfiehlt, zuerst das große Symbol zu gestalten und dann zu entscheiden, wie es verkleinert werden soll. Dabei sollte das Symbol bei Bedarf an die Größe und Pixeldichte angepasst werden, in der es erscheint.

Wann ICNS-Dateien relevant sind

Eine ICNS-Datei ist relevant, wenn ein macOS-Anwendungsbundle außerhalb der Asset-Pipeline von Xcode zusammengestellt wird, etwa durch ein plattformübergreifendes Paketierungswerkzeug. Möglicherweise müssen Sie die Datei nicht selbst erstellen: Laut seiner Dokumentation verwendet electron-builder eine fertige Datei mit der Endung .icns unverändert und kann auch eine PNG- oder SVG-Quelle konvertieren, wobei jede Größe aus dieser einen Eingabe erzeugt wird. Stellen Sie eine eigene Datei bereit, wenn Ihr Werkzeug eine benötigt oder wenn Sie die Gestaltung für jede Größe selbst bestimmen möchten. Innerhalb von Xcode sieht Apples aktuelle Dokumentation stattdessen vor, das App-Symbol über einen Asset-Katalog oder eine Icon-Composer-Datei bereitzustellen. Laut Apples archivierter Anleitung aus dem Jahr 2012 ist ein vollständiger Größensatz empfohlen, aber nicht erforderlich: Für eine ausgelassene Größe wählt macOS die beste verfügbare Darstellung. Diese Größe wird somit mit einer Grafik angezeigt, die für eine andere Größe gezeichnet wurde.

Quellen

Machen Sie aus Medienwissen eine funktionierende Pipeline

Verbinden Sie Uploads, Verarbeitung, KI, Storage und Auslieferung über eine deklarative API – um Encoding-Stack, Skalierung und ständig wechselnde Formate müssen Sie sich nicht selbst kümmern.

Transloadit kostenlos ausprobieren