Formato de imagem do ícone da Apple - Apple Icon Image format

Imagem do ícone da Apple
Ícone ICNS.
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 05deve 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:

  1. 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.
  2. 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
  3. 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 iconutilferramenta 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

Referências

  1. ^ "Diretrizes de interface humana" . A Apple Inc . Recuperado em 10 de abril de 2021 .
  2. ^ a b c Ícone do sistema: / System / Library / CoreServices / Applications / Screen Sharing.app/Contents/Resources/InternetLocationVNC.icns , macOS 11
  3. ^ Ícone do sistema: /System/Library/PrivateFrameworks/PassKitCore.framework/Versions/A/Resources/GenericIcon.icns, macOS 10.15.7
  4. ^ Ícone do sistema: /System/Library/PrivateFrameworks/ConsoleKit.framework/Versions/A/Resources/SidebariPhone.icns, macOS 10.15.7
  5. ^ Ícones Macintosh
  6. ^ "libicns" . SourceForge project icns. 2009 . Recuperado em 18 de agosto de 2016 .
  7. ^ "png2icns" . Moin Uddin. 2016 . Recuperado em 25 de maio de 2017 .
  8. ^ Lyonel Vincent (2007). "Ícones do Mac OS X para GTK +" . Recuperado em 18 de agosto de 2016 .