ICO (파일형식)

ICO (file format)
ICO
파일 확장자
.ico
인터넷 매체 유형image/x-icon[1] (단, 아래 참조)
UTI(Uniform Type Identifier)com.com.ico
개발자 :마이크로소프트
형식 유형컴퓨터 아이콘용 그래픽 파일 형식
의 컨테이너BMPPNG
확장 대상CUR
CUR
파일 확장자
.cur
인터넷 매체 유형image/vnd.slimes.아이콘
UTI(Uniform Type Identifier)com.c.cur
개발자 :마이크로소프트
형식 유형마우스 커서용 그래픽 파일 형식
의 컨테이너BMP
에서 확장됨ICO

ICO 파일 형식은 마이크로소프트 윈도우에서 컴퓨터 아이콘을 위한 이미지 파일 형식입니다.ICO 파일은 여러 크기와 색상 깊이에 하나 이상의 작은 이미지를 포함하여 적절히 크기를 조정할 수 있습니다.Windows(윈도우)에서 사용자에게 아이콘을 표시하는 모든 실행 파일, 바탕 화면, 시작 메뉴 또는 Windows 탐색기에서 아이콘을 ICO 형식으로 휴대해야 합니다.

CUR 파일 형식은 Microsoft Windows에서 애니메이션이 아닌 커서에 대해 거의 동일한 이미지 파일 형식입니다.이 두 파일 형식의 차이점은 해당 파일 형식을 식별하는 데 사용되는 바이트와 CUR 형식 헤더에 핫스팟을 추가한 것뿐입니다. 핫스팟은 사용자가 마우스를 실제로 가리키고 있는 커서 이미지의 왼쪽 상단 모서리에서 픽셀 오프셋(x,y 좌표)으로 정의됩니다.

ANI 파일 형식은 애니메이션 Windows 커서에 사용됩니다.

역사

윈도우 1.0에 소개된 아이콘들은 32×32 픽셀 크기였고 [2]단색이었습니다.윈도우 3.[citation needed]0에서는 16가지 색상을 지원합니다.

Win32최대 1670만 개의 색상(TrueColor)과 256x256 픽셀의 아이콘 이미지를 [3]차원별로 저장할 수 있도록 지원합니다.윈도우 95는 또한 새로운 DIB(Device Independent Bitmap)[4] 엔진을 선보였습니다.그러나 윈도우 95에서는 256색이 기본 아이콘 색 깊이였습니다.65535 컬러(Highcolor) 아이콘은 레지스트리에서[3][5] Shell Icon BPP 값을 수정하거나 Windows 95용 Microsoft Plus!를 구입하여 활성화할 수 있었습니다.Shell Icon Size 값을 사용하면 32x32 아이콘 대신 큰 아이콘을 사용할 수 있고 Shell Small Icon Size 을 사용하면 16x16 [3]아이콘 대신 사용자 지정 크기를 사용할 수 있습니다.따라서 단일 아이콘 파일은 2(거의 사용되지 않음), 16, 256, 65535 또는 1,670만 색상의 1x1 픽셀부터 256x256 픽셀(사각형이 아닌 크기 포함)까지 모든 크기의 이미지를 저장할 수 있지만 셸은 매우 큰 크기의 아이콘을 표시할 수 없습니다.Windows 작업 표시줄의 알림 영역은 기본적으로 Windows Me(윈도우 미)가 고색 아이콘을 지원하도록 업데이트될 까지 16개 색상 아이콘으로 제한되었습니다.

Windows XP(윈도우 XP)는 32비트 색상(1,670만 개의 색상과 8비트 알파 채널 투명도) 아이콘 이미지를 지원하여 그림자, 안티에일리어싱, 유리와 같은 반투명 영역을 아이콘에 그릴 수 있도록 했습니다.Windows XP(윈도우 XP)는 기본적으로 Windows 탐색기에서 48x48 픽셀 아이콘을 사용합니다.셸 아이콘 크기 값을 수정하면 Windows XP에서 256x256 크기의 아이콘을 사용하도록 강제할 수 있지만 셸 전체의 32x32 아이콘은 모두 [3]업스케일링됩니다.마이크로소프트는 윈도우 [6]XP의 경우 최대 48x48픽셀의 아이콘 크기만을 권장했습니다.더 가까운 이미지 크기가 없는 경우 Windows XP([3]윈도우 XP)에서 더 큰 아이콘을 축소할 수 있습니다.

윈도우 비스타는 256x256 픽셀 32비트 컬러 [Notes 1]아이콘을 완벽하게 지원하고 압축된 PNG 형식을 지원합니다.압축이 필요하지는 않지만 전체 파일 크기를 줄이기 위해 ICO 파일의 모든 32비트 색상 256×256 아이콘을 PNG 형식으로 저장할 것을 권장합니다.Windows Vista 탐색기는 아이콘 파일에 해당 크기의 이미지가 없더라도 아이콘을 비표준 크기로 원활하게 확장할 수 있도록 지원합니다.Windows Vista 셸은 아이콘 크기를 안팎으로 "줌"하기 위한 슬라이더를 추가합니다.높은 해상도와 높은 DPI 모드를 사용하는 사용자에게는 더 큰 아이콘 형식(예: 256x256)이 [7][8]권장됩니다.

MIME 타입

ICO 파일의 IANA 등록 MIME 유형은image/vnd.microsoft.icon,[9]그것은 2003년에 제3자에 의해 IANA에 제출되었고 마이크로소프트 소프트웨어에 의해 인식되지 않습니다[9].image/x-icon아니면image/ico대신에[10][11]오식image/ico,image/icon,text/ico그리고.application/ico사용하는 [9]것도 목격되었습니다.

아이콘파일구조

ICO 또는 CUR 파일은 파일의 각 이미지에 대한 ICONDERENTRY 구조를 포함하는 ICONDIR("아이콘 디렉터리") 구조로 구성되며, 이어서 모든 이미지 비트맵 데이터의 연속된 블록(비트맵 파일헤더 구조를 제외한 Windows BMP 형식이거나 [3]전체가 저장된 PNG 형식일 수 있음)으로 구성됩니다.

컬러 깊이가 32비트 미만인 이미지는 특정 형식을 따릅니다. 이미지는 컬러 마스크("XOR 마스크")와 불투명 마스크("AND 마스크")[6][3]로 구성된 단일 이미지로 인코딩됩니다.XOR 마스크는 비트맵 데이터 내부의 AND 마스크 앞에 있어야 합니다. 영상이 상향식 순서로 저장되어 있는 경우(아마도 그럴 것입니다) XOR 마스크는 AND 마스크 아래에 그려집니다.AND 마스크는 BMP 헤더에 의해 지정된 색상 깊이에 관계없이 픽셀당 1비트이며 완전 투명(1)이고 완전 불투명(0)인 픽셀을 지정합니다.XOR 마스크는 BMP 헤더에 지정된 비트 깊이를 준수하며 각 픽셀의 숫자 색상 또는 팔레트 값을 지정합니다.AND 마스크와 XOR 마스크는 함께 1비트 투명도의 이미지를 나타내는 불투명 이미지를 만듭니다. 또한 배경을 반전시킬 수 있습니다.ICO/CUR 파일의 ICONDERENTRY 구조에서 이미지에 대한 높이는 의도된 이미지 치수(마스크가 합성된 후)의 높이를 차지하는 반면, BMP 헤더에서 높이는 (마스크가 합성되기 전) 결합된 두 마스크 이미지의 높이를 차지합니다.따라서 마스크는 각각 동일한 치수여야 하며, BMP 헤더에 지정된 높이는 ICONDERENTRY [12]구조에 지정된 높이의 정확히 두 배여야 합니다.

32비트 이미지(32비트 비트맵 INFOHEADER 형식 BMP[Notes 2] 이미지 포함)는 알파 합성을 위한 8비트 채널이 추가된 24비트 이미지입니다.따라서 32비트 영상에서는 AND 마스크가 필요하지 않지만 고려할 것을 권장합니다.ICO/CUR 파일에 24비트 버전의 이미지가 제공되지 않는 경우 Windows XP 이상에서는 알파 채널을 기반으로 AND 마스크를 구성하여 트루 컬러 이하의 32비트 이미지를 사용합니다.그러나 이전 버전의 Windows(윈도우)에서는 AND 마스크가 이미지와 함께 제공되지 않는 한 모든 픽셀이 100% 불투명도로 해석됩니다.사용자 지정 AND 마스크를 제공하면 아이콘 작성자가 조정 및 암시를 할 수도 있습니다.AND 마스크가 제공되지 않더라도 이미지가 Windows BMP 형식인 경우 BMP 헤더는 여전히 두 배 높이를 지정해야 합니다.

AND 마스크에서 비트맵의 픽셀 배열의 경우 기본적으로 (단색)[3] 비트맵이므로 각 행의 끝에 패딩 바이트를 추가해야 길이를 4바이트의 배수로 늘릴 수 있습니다.8x8 픽셀 비트맵의 AND 마스크에는 1바이트의 데이터와 3바이트의 패딩이 있습니다(8*8*1bpp = 64비트/8 = 8바이트의 총 행). 16x16 비트맵의 AND 마스크에는 2바이트의 데이터와 2바이트의 패딩이 있고, 32x32 비트맵의 AND 마스크에는 4바이트의 데이터가 있고 패딩이 없습니다.AND 마스크는 픽셀당 1비트이므로 필요한 패딩 바이트의 양은 비트맵의 치수에 따라 달라지며 색상 깊이는 다릅니다.

개요

ICO/CUR 파일의 모든 값은 리틀엔디안 바이트 순서로 표시됩니다.

머리글

ICONDIR 구조
간격띄우기# 크기 목적
0 2 예약.항상 0이어야 합니다.
2 2 아이콘(.)에 대해 이미지 유형을 1로 지정합니다.ICO) 이미지, 커서(.)에 대해 2개CUR) 이미지.다른 값이 올바르지 않습니다.
4 2 파일의 이미지 수를 지정합니다.

영상디렉토리

이미지 #1 첫번째 영상에 대한 항목
이미지 #2 두번째 영상에 대한 항목
...
이미지 #n 마지막 이미지 항목
이미지입력
Icononderentry
간격띄우기# 크기 목적
0 1 픽셀 단위로 이미지 너비를 지정합니다.0과 255 사이의 임의의 숫자일 수 있습니다.값 0은 이미지 너비가 [Notes 1]256픽셀임을 의미합니다.
1 1 이미지 높이를 픽셀 단위로 지정합니다.0과 255 사이의 임의의 숫자일 수 있습니다.값 0은 이미지 높이가 [Notes 1]256픽셀임을 의미합니다.
2 1 색상 팔레트의 색상 수를 지정합니다.이미지가 색상 팔레트를 사용하지 않는 경우 0이어야 합니다.
3 1 예약.0이어야 합니다.
4 2
  • ICO 형식:색상 평면을 지정합니다.0 또는 [Notes 3]1이어야 합니다.
  • CUR 형식:핫스팟의 수평 좌표를 [Notes 4]왼쪽에서 픽셀 수로 지정합니다.
6 2
  • ICO 형식:픽셀당 비트를 지정합니다.
  • CUR 형식:핫스팟의 수직 좌표를 [Notes 4]위쪽에서 픽셀 수로 지정합니다.
8 4 이미지의 데이터 크기(바이트)를 지정합니다.
12 4 ICO/CUR 파일의 처음부터 BMP 또는 PNG 데이터의 오프셋을 지정합니다.

참조 영상 데이터

이미지 디렉토리의 항목이 참조하는 모든 이미지 데이터는 이미지 디렉토리 바로 다음에 진행됩니다.이미지 디렉토리에 정의된 순서대로 저장하는 것이 일반적입니다.

이미지가 BMP 형식으로 저장되어 있는 경우, 해당 이미지는 열려 있는 비트맵 파일헤더 구조를 제외해야 하는 반면, PNG 형식으로 저장되어 있는 경우에는 해당 이미지 전체를 저장해야 합니다.

BMP 이미지의 높이는 이미지 디렉토리에 선언된 높이의 두 배여야 합니다.비트맵의 후반부는 기존 스크린 픽셀에 대한 AND 마스크여야 하며, 공식에 따라 출력 픽셀이 제공됩니다.Output = (Existing AND Mask) XOR Image. 깨끗한 덮어쓰기를 위해 마스크를 모든 곳에서 0으로 설정합니다.

PNG 형식

윈도우 [7]비스타에는 ICO와 CUR 포맷 이미지에서 PNG 이미지를 읽을 수 있는 기능이 도입되었습니다.PNG 이미지는 파일 헤더와 함께 PNG 이미지 전체를 저장해야 하며 32bp ARGB 형식이어야 한다는 예외를 제외하고는 표준 Windows BMP 형식 [7]이미지와 동일한 방식으로 이미지에 저장할 수 있습니다.

아이콘 및 커서 리소스

휴대용 실행 파일(EXE 또는 DLL)의 아이콘과 커서는 RT_GROUP_ICON, RT_GROUP_CURRSOR, RT_ICON 및 RT_CURRSOR [13]유형의 리소스로 구성됩니다.

RT_GROUP_ICON 및 RT_GROUP_CURSOR 리소스에는 NEWHEADER 구조와 ICO/CUR 파일에서 해당하는 ICONDIR 및 ICONDIRETRY 구조와 거의 동일한 형식을 가진 하나 이상의 RESDIR 구조가 포함되어 있습니다.주요 차이점은 RESDIR에서 구조의 마지막 멤버가 파일의 이미지 오프셋 대신 RT_ICON/RT_CURSER의 2바이트 리소스 식별자를 포함하고 있다는 것입니다.

많은 [14]소스에서 NEW Header/RESDIR 구조GRPICONDIR/GRPICONDIR이라고도 합니다.

뉴헤더 구조
간격띄우기# 크기 목적
0 2 예약.항상 0이어야 합니다.
2 2 아이콘 리소스에 대해 1, 커서 리소스에 대해 2와 같이 리소스 유형을 지정합니다.다른 값이 올바르지 않습니다.
4 2 NEWHEADER 구조를 즉시 따르는 RESDIR 구조의 수를 지정합니다.
RESDIR 구조
간격띄우기# 크기 목적
0 아이콘의 경우: 1 * 픽셀 단위로 이미지 너비를 지정합니다.0과 255 사이의 임의의 숫자일 수 있습니다.값 0은 이미지 너비가 [Notes 1]256픽셀임을 의미합니다.
커서의 경우: 2
2 아이콘의 경우: 1 * 이미지 높이를 픽셀 단위로 지정합니다.0과 255 사이의 임의의 숫자일 수 있습니다.값 0은 이미지 너비가 [Notes 1]256픽셀임을 의미합니다.
커서의 경우: 2
2 1 * 아이콘 리소스의 경우:색상 팔레트의 색상 수를 지정합니다.이미지가 색상 팔레트를 사용하지 않는 경우 0이어야 합니다.
3 1 * 아이콘 리소스의 경우:예약.0이어야 합니다.
4 2 색상 평면을 지정합니다.0 또는 [Notes 3]1이어야 합니다.
6 2 픽셀당 비트를 지정합니다.[Notes 5]
8 4 리소스 크기를 바이트 단위로 지정합니다.
12 2 RT_ICON 또는 RT_CURRSor 리소스의 고유 순서 식별자입니다.


RT_ICON 및 RT_CURRSOR 리소스는 ICO 파일에서와 동일한 이미지 데이터 형식을 가지며 PNG 이미지도 저장할 수 있습니다.또한 RT_CURRSOR 리소스 데이터의 처음 4바이트에는 커서 핫스팟 데이터가 포함되어 있는데, 이는 두 개의 16비트 값(CUR 파일에는 ICONDIRENTRY [15]구조의 핫스팟 데이터가 있음)에 해당합니다.

아이콘 라이브러리

아이콘 라이브러리는 Windows(윈도우) 아이콘을 패키지화하는 방법입니다.일반적으로 16비트 New Executive 파일이거나 32비트 Portable Executive 바이너리 파일로, 가 있습니다.아이콘 리소스가 패키지 아이콘인 ICL 확장.Windows Vista(윈도우 비스타) 이상 버전에서는 16비트([16] 실행 파일) 파일에서 아이콘을 볼 수 없습니다.

참고 항목

메모들

  1. ^ a b c d e ICONDERENTRY 구조의 Windows 95 크기 이미지는 0으로 설정될 수 있으므로 256픽셀을 의미합니다.Windows Vista(윈도우 비스타) 이후 이미지 크기는 256픽셀보다 큰 아이콘을 저장할 수 있는 비트맵 인포헤더(BIMP INFOHEADER) 구조 또는 PNG 이미지 데이터에서 결정되지만 Microsoft(마이크로소프트)에서는 이보다 큰 크기를 권장하지 않습니다.
  2. ^ 고전적인 비트맵 INFOHEADER 비트맵 형식은 픽셀당 32비트로 이미지를 저장할 수 있도록 지원합니다.독립 실행형으로 저장된 경우.BMP 파일, "각 [픽셀]의 높은 바이트는 사용되지 않습니다."그러나 이 동일한 데이터가 ICO 또는 CUR 파일 내부에 저장되어 있는 경우 Windows XP(1비트 이상의 투명도를 가진 ICO/CUR 파일을 지원하는 최초의 Windows 버전) 이상에서는 이 바이트를 알파 값으로 해석합니다.
  3. ^ a b 색상 평면을 0 또는 1로 설정하는 것은 운영 체제에서 동등하게 처리되지만 색상 평면이 1보다 높게 설정된 경우 이 값에 픽셀당 비트를 곱하여 이미지의 최종 색상 깊이를 결정해야 합니다.다양한 윈도우즈 운영 체제 버전이 다른 색상 평면 값에 대해 복원력이 있는지 알 수 없습니다.
  4. ^ a b "Windows XP icon and cursor support". Microsoft. November 18, 2005. Archived from the original on 2011-06-30. Retrieved 2023-07-03. The cursor is loaded properly at whatever color depth the cursor was authored. However, the system cannot distinguish between multiple candidates in the same cursor file or resource that differ only by their color depths. Icons, however, fully support multiple icon candidates with varying color depths.
  5. ^ a b 픽셀당 비트 수는 0으로 설정될 수 있지만 다른 데이터에서 유추할 수 있습니다. 특히 비트맵이 PNG 압축이 아닌 경우 이미지 크기에 대한 비트맵 데이터의 길이를 기준으로 픽셀당 비트 수를 계산할 수 있습니다.비트맵이 PNG 압축된 경우 픽셀당 비트 수가 PNG 데이터 내에 저장됩니다.다양한 Windows 운영 체제 버전에 이 값이 0으로 설정된 경우 모든 가능성에 대해 비트 심도를 추론하는 논리가 포함되어 있는지 알 수 없습니다.

참고문헌

  1. ^ "MIME Sniffing Standard". WHATWG. January 17, 2014. Archived from the original on 2014-03-27. Retrieved 2014-04-18.
  2. ^ Fekete, Gyorgy (March 11, 2009). "Operating System Interface Design Between 1981-2009". Webdesigner Depot. Retrieved June 6, 2011.
  3. ^ a b c d e f g h Hornick, John (September 29, 1995). "Icons". Windows User Interface Technical Articles (MSDN). Microsoft Corporation. Retrieved June 5, 2011.
  4. ^ "Windows 95 Architecture Components". Microsoft TechNet. Microsoft Corporation. Retrieved June 6, 2011.
  5. ^ "Shell Icon BPP". Windows 2000 Registry Reference (Microsoft TechNet). Microsoft Corporation. Retrieved June 6, 2011.
  6. ^ a b "Creating Windows XP Icons". Windows XP Technical Articles (MSDN). Microsoft Corporation. July 2001. Retrieved 2022-11-27.
  7. ^ a b c Chen, Raymond (October 22, 2010). "The evolution of the ICO file format, part 4: PNG images". The Old New Thing - Microsoft Developer Blogs. Retrieved 2022-11-27.
  8. ^ "Icons (Design basics) - Win32 apps". learn.microsoft.com. 9 February 2021. Icons have a maximum size of 256x256 pixels, making them suitable for high-dpi (dots per inch) displays. These high-resolution icons allow for high visual quality in list views with large icons... Only a 32-bit copy of the 256x256 pixel image should be included, and only the 256x256 pixel image should be compressed to keep the file size down.
  9. ^ a b Butcher, Simon (3 Sep 2003). "image/vnd.microsoft.icon". Retrieved 3 Jan 2014.
  10. ^ Lawrence, Eric (11 Feb 2011). "IE9 RC Minor Changes List". IEInternals. MSDN Blogs. Retrieved 20 Aug 2016. We use "image/x-icon" because that's the MIME type we've always used. Someone at some point (AFAIK, not related to Microsoft) proposed registration of the MIME type as "vnd.microsoft.icon", but Windows doesn't actually use that, it uses image/x-icon. 두 번째 댓글을 보세요.
  11. ^ Windows Imaging Component - ICO 형식 개요
  12. ^ Chen, Raymond (2010-10-19). "The evolution of the ICO file format, part 2: Now in color!". The Old New Thing. Retrieved 2022-12-30.
  13. ^ "Resource File Formats - Win32 apps". learn.microsoft.com. 2020-08-19. Retrieved 2023-05-22.
  14. ^ Chen, Raymond (July 20, 2012). "The format of icon resources". The Old New Thing - Microsoft Developer Blogs. Retrieved 2023-05-20.
  15. ^ "LOCALHEADER structure - Win32 apps". learn.microsoft.com. 2020-12-11. Retrieved 2023-05-22.
  16. ^ Chen, Raymond (May 2008). "Windows Confidential - 16-Bit Icons Are So Passé". TechNet Magazine. Retrieved November 27, 2022.

외부 링크