Apple 아이콘 이미지 형식

Apple Icon Image format
애플 아이콘 이미지
ICNS icon.
파일 이름 확장명
.icns
인터넷 미디어 유형이미지/x-icns
유형코드icns.
동일 유형 식별자(UTI)com.apple.icns.
매직넘버69 63 6e 73
개발자애플
형식 유형아이콘 파일 형식

Apple Icon Image 형식은 Apple Inc.macOS에서 사용되는 아이콘 형식이다.1·8비트 알파 채널과 다중 이미지 상태(예: 열린 폴더, 닫힌 폴더)로 16 × 16, 32 × 32, 48 × 48, 128 × 128, 256 × 256, 512 × 512 포인트의 아이콘을 지원한다.고정 크기 아이콘은 운영 체제에서 크기를 조정할 수 있으며 중간 크기로 표시할 수 있다.

MacOS 11에서 자산 카탈로그는 대신 MacOS 사용자 지정 아이콘에 대해 선호하는 파일 형식이다.[1]

파일 구조

파일 형식은 8바이트 헤더로 구성되며, 그 다음에는 임의의 수의 아이콘이 나타난다.

헤더

오프셋 크기 목적
0 4 매직 리터럴, "icns"(0x69, 0x63, 0x6e, 0x73)여야 함
4 4 파일 길이(바이트), msb 먼저

아이콘 데이터

오프셋 크기 목적
0 4 아이콘 유형, 아래 OSType를 참조하십시오.
4 4 데이터 길이(바이트)(유형 및 길이 포함), msb 먼저
8 변수 아이콘 데이터

아이콘 유형

OSType 길이(바이트) 크기(픽셀) 지원되는 OS 버전 설명
아이콘 128 32×32 1.0 1비트 모노 아이콘
ICN# 256 32×32 6.0 1비트 마스크가 있는 1비트 모노 아이콘
icm# 48 16×12 6.0 1비트 마스크가 있는 1비트 모노 아이콘
icm4 96 16×12 7.0 4비트 아이콘
icm8 192 16×12 7.0 8비트 아이콘
ics# 64 16×16 6.0 1비트 마스크가 있는 1비트 모노 아이콘
ics4 128 16×16 7.0 4비트 아이콘
ics8 256 16×16 7.0 8비트 아이콘
is32 다양하다1(768년) 16×16 8.5 24비트 RGB 아이콘
s8mk 256 16×16 8.5 8비트 마스크
icl4 512 32×32 7.0 4비트 아이콘
icl8 1024 32×32 7.0 8비트 아이콘
일일로32번길 다양하다1 (3072) 32×32 8.5 24비트 RGB 아이콘
l8mk 1024 32×32 8.5 8비트 마스크
ich# 576 48×48 8.5 1비트 마스크가 있는 1비트 모노 아이콘
ich4 1152 48×48 8.5 4비트 아이콘
ich8 2304 48×48 8.5 8비트 아이콘
ih32 다양하다1(6912) 48×48 8.5 24비트 RGB 아이콘
h8mk 2304 48×48 8.5 8비트 마스크
it32 다양함1(49152 +2 4) 128×128 10.0 24비트 RGB 아이콘
t8mk 16384 128×128 10.0 8비트 마스크
icp4 다르다 16x16 10.7 JPEG 2000 또는 PNG 형식 또는 24비트 RGB 아이콘[2]
icp5 다르다 32x32 10.7 JPEG 2000 또는 PNG 형식 또는 24비트 RGB 아이콘[2]
icp6 다르다 48x48 10.7 JPEG 2000 또는 PNG 형식
ic07 다르다 128x128 10.7 JPEG 2000 또는 PNG 형식
ic08 다르다 256x256 10.5 JPEG 2000 또는 PNG 형식
ic09 다르다 512x101 10.5 JPEG 2000 또는 PNG 형식
ic10 다르다 1024x1024 10.7 JPEG 2000 또는 PNG 형식(10.8의 512x512@2x "레티나")
ic11 다르다 32x32 10.8 JPEG 2000 또는 PNG 형식(16x16@2x "retina")
ic12 다르다 64x64 10.8 JPEG 2000 또는 PNG 형식(32x32@2x "retina")
ic13 다르다 256x256 10.8 JPEG 2000 또는 PNG 형식(128x128@2x "retina")
ic14 다르다 512x101 10.8 JPEG 2000 또는 PNG 형식(256x256@2x "retina")
ic04 다양하다1 (1024) 16x16 ARGB 또는 JPEG 2000 또는 PNG 형식
ic05 다양하다1(4096) 32x32 ARGB 또는 JPEG 2000 또는 PNG 형식(16x16@2x "retina")
icsb 변동1(1296) 18x18 ARGB 또는 JPEG 2000 또는 PNG 형식
icsB 다르다 36x36 JPEG 2000 또는 PNG 형식(18x18@2x "레티나")
sp24 다르다 24x24 JPEG 2000 또는 PNG 형식
SB24 다르다 48x48 JPEG 2000 또는 PNG 형식(24x24@2x "retina")
  • 1. 괄호 안의 값은 ARGB 및 24비트 RGB 아이콘의 압축되지 않은 길이입니다.
  • 2. it32 데이터는 항상 0바이트의 헤더로 시작한다(macOS 10.15.7 및 macOS 11에서 모든 icns 파일을 테스트함).사용법을 알 수 없는 경우, 네 개의 0바이트는 어떤 값도 될 수 있고 조용히 무시된다.
  • †. 이러한 형식은 독립 실행형 icns 파일에서 지원되지만 .app 패키지 내에서 애플리케이션 아이콘으로 사용되는 경우 제대로 표시되지 않는다.

이미지 데이터 형식

  • 알파 마스크가 있는 모노 아이콘은 흰색, 검은색, 투명 세 가지 색을 표시할 수 있다.
  • 4비트 8비트 아이콘은 각각 128색, 256색의 고정 색상 팔레트를 사용한다.
  • 24비트 RGB 형식은 꽉 채워진 3개의 압축 채널로 구성된다(압축 참조).it32 아이콘은 반드시 4바이트 헤더로 시작해야 한다. 위의 각주를 참조하십시오.
  • ARGB 형식은 'ARGB'에 대한 ASCII 값과 꽉 채워진 4개의 압축 채널로 구성된다(압축 참조).

호환성.

  • ARGB 필드도 PNG 형식의 파일을 허용하지만, 그 반대의 경우는 아니지만, PNG 전용 필드(macOS 11에서 테스트됨)에는 ARGB 영상을 넣을 수 없다.
  • ARGB 이미지는 MacOS 11 이상에서만 지원되며, MacOS 10.15.7은 ARGB 이미지를 표시하지 않는다.그러나 JPEG 2000 또는 PNG 이미지를 설정한 경우 MacOS 10.15에 ARGB 키도 표시할 수 있다(위의 앱 패키지의 사용에 대한 각주 참조).
  • 24비트 RGB 아이콘(is32, il32, ih32, ih32, it32)도 JPEG 2000 및 PNG 형식(macOS 10.15.7 및 macOS 11에서 테스트됨)을 허용한다.
  • 새로운 이미지 유형에 대한 지원은 키 필드보다 늦게 도입되는 것 같다(이전 두 지점 참조).따라서 지원되는 OS 버전은 정확하지 않거나 파일 형식에 따라 조정되지 않을 수 있다.

기타유형

OSType 설명
'TOC.' "Table of Contents" 파일의 모든 이미지 유형 목록과 해당 크기(Mac OS X 10.7에 추가)
'icnV' 4바이트 빅 엔디안 플로트 - 아이콘을 만든 Icon Composer.app의 번들 버전 번호와 동일
'이름' 사용법을 알 수 없음(테스트된 모든 파일은 "아이콘"[3] 또는 "템플릿"[4]을 사용한다).
'info' 정보 이진 플리스트.사용법을 알 수 없음(이름 필드만 사용된 것 같음)
'sbtp' 중첩된 "템플릿" icns 파일.사용법을 알 수 없음.
'slct' 중첩된 "선택된" icns 파일.사용법을 알 수 없음.
FD D9 2F A8 중첩된 "어두운" icns 파일.다크 모드에서 자동 아이콘 전환 허용(macOS 10.14에 추가)
  • 목차는 포함된 모든 유형(4바이트 유형 이름 + 4바이트 길이)의 목록이다.
  • 모든 중첩된 icns 파일에 대한 데이터에는 icns 파일 헤더가 포함되어 있지 않다.따라서 데이터를 파일에 저장하려면 icns 헤더를 미리 작성해야 한다.

압축

이끌다
가치를 매기다
꼬리를 치다
바이트
결과
압착되지 않은
0...127 1...128 1...128바이트
128...255 1 바이트 3130복사본

시간이 지남에 따라 형식이 개선되었고 픽셀 데이터의 일부 부분을 압축할 수 있도록 지원된다.24비트 RGB(is32, il32, ih32, ih32, i32, i32, i32, icp4, icsb) 픽셀 데이터는 PackBits와 유사한 형식으로 (채널당) 압축된다.[5]일부 정보원은 OS가 압축된 데이터 청크와 압축되지 않은 데이터 청크를 모두 지원한다고 언급한다.[citation needed]그러나 압축되지 않은 24비트 RGB 또는 ARGB 이미지로 icns 파일을 수동으로 크래프트하는 것은 제대로 표시되지 않을 것이다(최소한 새로운 MacOS 11에서 테스트됨).

다음은 데이터의 압축을 푼다.

압축된 데이터가 있는 동안: 1바이트를 서명되지 않은 번호 N으로 읽으십시오. N < 0x80인 경우:다음 (N + 1)바이트 출력 안 함:다음 바이트(N - 0x80 + 3) 출력

예:02 01 02 02 80 03 81 04 82 05로 압축을 풀어야 한다.01 02 02 03 03 03 04 04 04 04 05 05 05 05 05

알려진 문제

MacOS 11을 기준으로 파일 형식의 특정 문제/버그가 있음:

  1. is32+ics8 또는 ih32+ich8을 설정하면 적절한 아이콘이 표시된다.그러나 il32+icl8을 설정하면 투명 마스크가 무시되고 투명성 없이 아이콘이 표시된다.
  2. 압축된 ARGB 데이터가 올바르게 해석되지 않음블루 채널의 마지막 값(일명, 가장 마지막 값)은 무시되고 모두 0바이트인 것처럼 취급된다.대부분의 아이콘은 어쨌든 오른쪽 하단 모서리에 투명성이 있기 때문에 보통 이것은 문제가 되지 않는다.그러나 마지막 값이 반복 바이트일 경우 문제가 될 수 있다(압축 참조).잠재적으로 최대 130픽셀까지 블루 채널 값이 부족할 수 있다.
    해결 방법은 데이터를 따르지 않고 제어 문자로 해석되는 바이트를 끝에 추가하는 것이다.차이를 다음의 두 가지 예와 비교할 수 있다.
    • 69636E73 00000024 69633034 0000001C 41524742 FFFFFBFF FF00FB00 FF00FB00 FFFFFBFF
    • 69636E73 00000025 69633034 0000001D 41524742 FFFFFBFF FF00FB00 FF00FB00 FFFFFBFF 00
  3. macOS 10.15.7(예: 이전 버전) 이상 버전에는 키 ipc4(16x16), ipc5(32x32) 및 ipc6(64x64)에 대한 PNG 및 JPEG 2000 아이콘이 표시되는 문제가 있다.키는 독립 실행형 icns 파일에서 잘 작동하지만 응용 프로그램에서 사용할 경우 아이콘은 완전히 스크램블 상태로 표시된다.새로운 ARGB 형식 ic04ic05(macOS 11+) 또는 이전 24비트 RGB + 알파 마스크 형식을 사용하십시오.후자는 기존 키가 32+s8mkil32+l8mk인 경우 또는 최신 키 ipc4+s8mkicp5+l8mk인 경우(RGB 데이터를 PNG 필드에[2] 쓰기)로 사용하십시오.ARGB 이미지 데이터를 사용하는 경우 MacOS 10.15 이전 버전의 대체 형식을 제공하십시오.이 문제는 특히 16x16 및 16x16@2x 아이콘을 모두 제공하는 경우 감지하기가 까다롭다. 왜냐하면 Mac을 비 레티나 모니터에 연결하면 비 레티나 16x16 아이콘이 사용되어 아이콘이 스크램블 상태로 표시되기 때문이다.ICP6 필드는 애플리케이션 아이콘에 사용되지 않는 것으로 보이며 무시해도 무방하다.또한 더 작은 아이콘 크기를 제공하지 않을 경우 OS가 더 큰 PNG/JPEG 2000 아이콘을 축소할 때도 버그가 나타나므로 더 작은 크기를 렌더링하여 포함시키십시오.

지원

다양한 이미지 뷰어가 파일을 로드할 수 있으며, PNG에서 또는 PNG로 자유롭게 오픈 소스 컨버터도 존재한다.[6][7]GTK+는 2007년부터 자원을 로딩할 수 있다.[8]이 형식을 지원하는 다른 도구로는 Apple Icon Composericns Browser, The Iconfactory, IconBuilder 등이 있다.
MacOS는[clarification needed] 내장 제공iconutil파일을 패키징하고 압축을 푸는 명령줄 도구.

외부 링크

  • IconFamily – Apple icns 파일을 읽고 쓸 수 있는 오픈 소스 목표 C 클래스
  • oxiconutils - Apple icns 파일과 함께 작동하는 명령줄 도구
  • icnsutil - icns 파일을 읽고 쓰는 Python 라이브러리

참고 항목

참조

  1. ^ "Human Interface Guidelines". Apple Inc. Archived from the original on June 18, 2018. Retrieved April 10, 2021.
  2. ^ a b c System icon: /System/Library/CoreServices/Applications/Screen Sharing.app/Contents/Resources/InternetLocationVNC.icns, macOS 11
  3. ^ System icon: /System/Library/PrivateFrameworks/PassKitCore.framework/Versions/A/Resources/GenericIcon.icns, macOS 10.15.7
  4. ^ System icon: /System/Library/PrivateFrameworks/ConsoleKit.framework/Versions/A/Resources/SidebariPhone.icns, macOS 10.15.7
  5. ^ 매킨토시 아이콘
  6. ^ "libicns". SourceForge project icns. 2009. Retrieved August 18, 2016.
  7. ^ "png2icns". Moin Uddin. 2016. Retrieved May 25, 2017.
  8. ^ Lyonel Vincent (2007). "Mac OS X icons for GTK+". Retrieved August 18, 2016.