Formato de imagem do ícone da Apple - Apple Icon Image format
Extensão de nome de arquivo |
.icns
|
---|---|
Tipo de mídia da Internet | imagem / x-icns |
Digite o código | icns |
Identificador de tipo uniforme (UTI) | com.apple.icns |
número mágico | 69 63 6e 73 |
Desenvolvido por | Apple Inc. |
Tipo de formato | formato de arquivo de ícone |
A imagem Apple Ícone formato é um ícone de formato usado na Apple Inc. 's MacOS . Ele suporta ícones de 16 × 16, 32 × 32, 48 × 48, 128 × 128, 256 × 256, 512 × 512 pontos em escala 1x e 2x, com canais alfa de 1 e 8 bits e vários estados de imagem (exemplo : pastas abertas e fechadas). Os ícones de tamanho fixo podem ser dimensionados pelo sistema operacional e exibidos em qualquer tamanho intermediário.
A partir do macOS 11 , o PNG se tornou o formato de arquivo preferido para ícones personalizados do macOS.
Estrutura de arquivo
O formato do arquivo consiste em um cabeçalho de 8 bytes, seguido por qualquer número de ícones.
Cabeçalho
Desvio | Tamanho | Propósito |
---|---|---|
0 | 4 | Literal mágico deve ser "icns" (0x69, 0x63, 0x6e, 0x73) |
4 | 4 | Comprimento do arquivo, em bytes, msb primeiro |
Dados do ícone
Desvio | Tamanho | Propósito |
---|---|---|
0 | 4 | Tipo de ícone, consulte OSType abaixo. |
4 | 4 | Comprimento de dados, em bytes (incluindo tipo e comprimento), msb primeiro |
8 | Variável | Dados do ícone |
Tipos de ícone
OSType | Comprimento (bytes) | Tamanho (pixels) | Versão de sistema operacional compatível | Descrição |
---|---|---|---|---|
ÍCONE | 128 | 32 × 32 | 1.0 | Ícone mono de 1 bit |
ICN # | 256 | 32 × 32 | 6,0 | Ícone mono de 1 bit com máscara de 1 bit |
icm # | 48 | 16 × 12 | 6,0 | Ícone mono de 1 bit com máscara de 1 bit |
icm4 | 96 | 16 × 12 | 7,0 | Ícone de 4 bits |
icm8 | 192 | 16 × 12 | 7,0 | Ícone de 8 bits |
ics # | 64 | 16 × 16 | 6,0 | Ícone mono de 1 bit com máscara de 1 bit |
ics4 | 128 | 16 × 16 | 7,0 | Ícone de 4 bits |
ics8 | 256 | 16 × 16 | 7,0 | Ícone de 8 bits |
is32 | varia 1 (768) | 16 × 16 | 8,5 | Ícone RGB de 24 bits |
s8mk | 256 | 16 × 16 | 8,5 | Máscara de 8 bits |
icl4 | 512 | 32 × 32 | 7,0 | Ícone de 4 bits |
icl8 | 1024 | 32 × 32 | 7,0 | Ícone de 8 bits |
il32 | varia 1 (3072) | 32 × 32 | 8,5 | Ícone RGB de 24 bits |
l8mk | 1024 | 32 × 32 | 8,5 | Máscara de 8 bits |
ich # | 576 | 48 × 48 | 8,5 | Ícone mono de 1 bit com máscara de 1 bit |
ich4 | 1152 | 48 × 48 | 8,5 | Ícone de 4 bits |
ich8 | 2304 | 48 × 48 | 8,5 | Ícone de 8 bits |
ih32 | varia 1 (6912) | 48 × 48 | 8,5 | Ícone RGB de 24 bits |
h8mk | 2304 | 48 × 48 | 8,5 | Máscara de 8 bits |
it32 | varia 1 (49152 + 4) 2 | 128 × 128 | 10,0 | Ícone RGB de 24 bits |
t8mk | 16384 | 128 × 128 | 10,0 | Máscara de 8 bits |
icp4 | varia | 16x16 | 10,7 | Formato JPEG 2000 † ou PNG † ou ícone RGB de 24 bits |
icp5 | varia | 32x32 | 10,7 | Formato JPEG 2000 † ou PNG † ou ícone RGB de 24 bits |
icp6 | varia | 48x48 | 10,7 | Formato JPEG 2000 † ou PNG † |
ic07 | varia | 128x128 | 10,7 | Formato JPEG 2000 ou PNG |
ic08 | varia | 256x256 | 10,5 | Formato JPEG 2000 ou PNG |
ic09 | varia | 512x512 | 10,5 | Formato JPEG 2000 ou PNG |
ic10 | varia | 1024 x 1024 | 10,7 | Formato JPEG 2000 ou PNG (512x512 @ 2x "retina" em 10.8) |
ic11 | varia | 32x32 | 10,8 | Formato JPEG 2000 ou PNG (16x16 @ 2x "retina") |
ic12 | varia | 64x64 | 10,8 | Formato JPEG 2000 ou PNG (32x32 @ 2x "retina") |
ic13 | varia | 256x256 | 10,8 | Formato JPEG 2000 ou PNG (128x128 @ 2x "retina") |
ic14 | varia | 512x512 | 10,8 | Formato JPEG 2000 ou PNG (256x256 @ 2x "retina") |
ic04 | varia 1 (1024) | 16x16 | Formato ARGB ou JPEG 2000 † ou PNG † | |
ic05 | varia 1 (4096) | 32x32 | Formato ARGB ou JPEG 2000 † ou PNG † (16x16 @ 2x "retina") | |
icsb | varia 1 (1296) | 18x18 | Formato ARGB ou JPEG 2000 † ou PNG † | |
icsB | varia | 36x36 | Formato JPEG 2000 ou PNG (18x18 @ 2x "retina") | |
sb24 | varia | 24x24 | Formato JPEG 2000 ou PNG | |
SB24 | varia | 48x48 | Formato JPEG 2000 ou PNG (24x24 @ 2x "retina") |
- 1. O valor entre parênteses é o comprimento não compactado para ícones ARGB e RGB de 24 bits.
- 2. Os dados it32 sempre começam com um cabeçalho de quatro bytes zero (testados todos os arquivos icns no macOS 10.15.7 e macOS 11). Com uso desconhecido, os quatro bytes zero podem ter qualquer valor e são silenciosamente ignorados.
- †. Esses formatos são suportados em arquivos icns autônomos, mas não são exibidos corretamente se usados como ícone de aplicativo dentro de um pacote .app .
Formato de dados de imagem
- Ícones mono com máscara alfa podem exibir três cores: branco, preto e transparente.
- Os ícones de 4 e 8 bits usam uma paleta de cores fixa com 128 cores e 256 cores respectivamente.
- O formato RGB de 24 bits consiste em três canais compactados compactados (consulte Compactação ). O ícone it32 deve começar com um cabeçalho de quatro bytes, consulte a nota de rodapé acima.
- O formato ARGB consiste nos valores ascii para 'ARGB' e os quatro canais compactados compactados (consulte Compactação ).
Compatibilidade
- os campos ARGB também aceitam arquivos no formato PNG - mas não vice-versa, você não pode colocar imagens ARGB em nenhum dos campos somente PNG (testado no macOS 11).
- As imagens ARGB são suportadas apenas no macOS 11 e mais recente - o macOS 10.15.7 não exibe imagens ARGB. No entanto, até mesmo as chaves ARGB podem ser exibidas no macOS 10.15 se você definir uma imagem JPEG 2000 ou PNG (consulte a nota de rodapé sobre o uso em pacotes de aplicativos acima).
- Os ícones RGB de 24 bits ( is32 , il32 , ih32 , it32 ) também permitem imagens no formato JPEG 2000 e PNG (testado no macOS 10.15.7 e macOS 11).
- O suporte para tipos de imagem mais recentes parece ser introduzido depois do campo-chave (consulte os dois pontos anteriores). Portanto, a versão do sistema operacional com suporte pode não ser precisa ou ajustada com base no formato do arquivo.
Outros tipos
OSType | Descrição |
---|---|
'TOC' | "Índice" uma lista de todos os tipos de imagem no arquivo e seus tamanhos (adicionado no Mac OS X 10.7 ) |
'icnV' | Float big endian de 4 bytes - igual ao número da versão do pacote de Icon Composer.app que criou o ícone |
'nome' | Uso desconhecido (todos os arquivos testados usam "ícone" ou "modelo"). |
'info' | Informações plist binário. Uso desconhecido (apenas o campo de nome parece ser usado). |
'sbtp' | Arquivo icns "modelo" aninhado. Uso desconhecido. |
'slct' | Arquivo icns "selecionado" aninhado. Uso desconhecido. |
FD D9 2F A8
|
Arquivo icns "escuro" aninhado. Permite a troca automática de ícones no modo escuro . (adicionado no macOS 10.14 ) |
- O índice é uma lista de todos os tipos contidos (nome do tipo de 4 bytes + comprimento de 4 bytes).
- Os dados de todos os arquivos icns aninhados não contêm o cabeçalho do arquivo icns. Portanto, se você quiser salvar os dados em um arquivo, terá que preceder o cabeçalho icns .
Compressão
valor de chumbo |
bytes da cauda |
resultado descompactado |
---|---|---|
0...127 | 1...128 | 1...128 bytes |
128...255 | 1 byte | 3...130 cópias |
Com o tempo, o formato foi aprimorado e há suporte para compressão de algumas partes dos dados de pixel. Os dados de pixel RGB de 24 bits ( is32 , il32 , ih32 , it32 , icp4 , icp5 ) e ARGB ( ic04 , ic05 , icsb ) são compactados (por canal) com um formato semelhante ao PackBits . Algumas fontes mencionam que o sistema operacional oferece suporte a blocos de dados compactados ou descompactados. No entanto, a criação manual de arquivos icns com imagens RGB ou ARGB de 24 bits não compactadas não será exibida corretamente - pelo menos nas versões mais recentes do macOS (testado no macOS 11).
O seguinte pseudocódigo descompacta os dados:
While there's compressed data:
Read one byte as an unsigned number N
If N < 0x80:
Output the next (N + 1) bytes
Else:
Output the next byte (N - 0x80 + 3) times
Exemplo: 02 01 02 02 80 03 81 04 82 05
deve descomprimir para01 02 02 03 03 03 04 04 04 04 05 05 05 05 05
Problemas conhecidos
A partir do macOS 11, existem alguns problemas / bugs com o formato do arquivo:
- A configuração is32 + ics8 ou ih32 + ich8 exibirá um ícone adequado. Mas definir il32 + icl8 ignora a máscara de transparência e exibe um ícone sem transparência.
- Os dados ARGB compactados não são interpretados corretamente. O último valor do canal azul (também conhecido como o último valor) é ignorado e tratado como se fosse todo de zero bytes. Normalmente, isso não é problema, pois a maioria dos ícones terá transparência no canto inferior direito de qualquer maneira. No entanto, pode se tornar um problema se o último valor for um byte repetido (consulte Compactação ). Potencialmente, até 130 pixels podem não ter o valor do canal azul.
Uma solução alternativa é anexar um byte adicional no final, que é interpretado como um caractere de controle sem os dados seguintes. Você pode comparar a diferença com estes dois exemplos:69636E73 00000024 69633034 0000001C 41524742 FFFFFBFF FF00FB00 FF00FB00 FFFFFBFF
69636E73 00000025 69633034 0000001D 41524742 FFFFFBFF FF00FB00 FF00FB00 FFFFFBFF 00
- O macOS 10.15.7 (provavelmente anterior) e versões posteriores apresentam um problema de exibição dos ícones PNG e JPEG 2000 para as chaves icp4 (16x16), icp5 (32x32) e icp6 (64x64). As teclas funcionam bem em um arquivo icns autônomo, mas se usadas em um aplicativo, os ícones são exibidos completamente embaralhados. Use o novo formato ARGB ic04 e ic05 (macOS 11+) ou o antigo formato de máscara RGB + alfa de 24 bits. Use o último com as chaves antigas is32 + s8mk e il32 + l8mk , ou com as chaves mais recentes icp4 + s8mk e icp5 + l8mk (gravando dados RGB em campos PNG). Se estiver usando dados de imagem ARGB, certifique-se de fornecer formatos alternativos para macOS 10.15 e anteriores. Esse problema é especialmente difícil de detectar se você fornecer ícones 16x16 e 16x16 @ 2x, porque se você conectar seu Mac a um monitor não retina, o ícone não retina 16x16 será usado e, portanto, o ícone será exibido embaralhado. O campo icp6 não parece ser usado em ícones de aplicativos e pode ser ignorado com segurança.
Apoio, suporte
Vários visualizadores de imagens podem carregar *.icnsarquivos e também existem conversores de código aberto de ou para PNG . GTK + pode carregar *.icnsrecursos desde 2007. Outras ferramentas que suportam o formato incluem Apple Composer Ícone e ICNS navegador , O Iconfactory e IconBuilder .
O MacOS oferece a iconutil
ferramenta de linha de comando integrada para compactar e descompactar *.icnsarquivos.
links externos
- IconFamily - classe Objective C de código aberto para ler e gravar arquivos icns da Apple
- osxiconutils - Ferramentas de linha de comando para trabalhar com arquivos icns da Apple
- icnsutil - biblioteca Python para ler e escrever arquivos icns
Veja também
- Formato ICO no Windows
- Formato X PixMap para X11
Referências
- ^ "Diretrizes de interface humana" . A Apple Inc . Recuperado em 10 de abril de 2021 .
- ^ a b c Ícone do sistema: / System / Library / CoreServices / Applications / Screen Sharing.app/Contents/Resources/InternetLocationVNC.icns , macOS 11
- ^ Ícone do sistema: /System/Library/PrivateFrameworks/PassKitCore.framework/Versions/A/Resources/GenericIcon.icns, macOS 10.15.7
- ^ Ícone do sistema: /System/Library/PrivateFrameworks/ConsoleKit.framework/Versions/A/Resources/SidebariPhone.icns, macOS 10.15.7
- ^ Ícones Macintosh
- ^ "libicns" . SourceForge project icns. 2009 . Recuperado em 18 de agosto de 2016 .
- ^ "png2icns" . Moin Uddin. 2016 . Recuperado em 25 de maio de 2017 .
- ^ Lyonel Vincent (2007). "Ícones do Mac OS X para GTK +" . Recuperado em 18 de agosto de 2016 .