Legacy File Converter 로고Legacy File Converter
역사 수업8분 읽기

역사 수업: .ico 파일이란? Windows 아이콘 형식

Windows 아이콘 형식 — 여러 크기와 색 깊이를 한 파일에 담고, 앞부분에 작은 헤더와 디렉터리를 두며, Windows Vista부터 PNG 압축 이미지를 지원하고, 커서용 형제 형식 .cur가 있으며, 지금도 모든 웹사이트가 응답하는 favicon.ico의 이야기.

·Legacy File Converter 팀 작성
화면에 아이콘이 있는 레트로 데스크톱 PC, 여러 크기로 겹쳐 쌓인 폴더 아이콘 하나, 문서 카드, 화살표 커서, 로고 없음

TL;DR

.ico는 Windows 아이콘 파일입니다. 파일 하나에 같은 아이콘의 여러 이미지를 서로 다른 크기와 색 깊이로 담을 수 있고, Windows는 바탕 화면, 제목 표시줄, 대화 상자에 가장 알맞은 것을 고릅니다. 구조는 단순합니다. 6바이트 헤더(예약 값, 형식, 이미지 수), 이미지마다 16바이트 디렉터리 항목, 그다음 이미지 데이터입니다. 기존 항목은 투명도를 위한 AND 마스크가 있는 비트맵(DIB) 데이터이며, Windows Vista부터는 항목이 완전한 PNG일 수 있어 256×256 아이콘이 실용화되었습니다. 커서 형식 .cur는 거의 쌍둥이입니다(형식이 1 대신 2, 그리고 핫스폿). 웹에서는 Internet Explorer 5(1999년 3월)가 사이트 루트에서 favicon.ico를 요청하기 시작했습니다. 일반 이미지로 쓰려면 .ico를 PNG로 로컬에서 변환하세요. Legacy File Converter는 사용자의 PC에서 변환하며 아무것도 업로드하지 않습니다.

.ico 파일이란?

.ico 파일은 Windows의 아이콘 형식입니다. 대부분의 이미지 파일은 그림 한 장을 담지만, ICO 파일은 아이콘 리소스, 즉 같은 아이콘을 서로 다른 크기와 색 깊이로 그린 이미지의 작은 모음을 담습니다. Microsoft의 설명 자료인 John Hornick의 Icons 문서(1995년 9월 29일 작성)는 ICO 파일 하나 또는 EXE나 DLL 안의 아이콘 리소스 하나에 크기나 색 깊이가 다른 여러 아이콘 이미지를 담을 수 있다고 분명히 말합니다.

그래서 ".ico 파일이란"이라는 검색은 보통 프로그램 폴더, 웹 다운로드, 오래된 프로젝트에서 이 파일을 발견했는데 사진 뷰어에 작은 사각형만 보이거나 아무것도 보이지 않아 궁금해진 사람에게서 나옵니다. 파일은 정상입니다. 일반 사진이 아니라 아이콘 이미지 컨테이너일 뿐입니다. 관련 형식은 역사 수업: .bmp 파일이란?과 역사 수업: .png 파일이란?을 참고하세요.

초기 Windows 아이콘과 단일 크기의 시대

아이콘은 Windows의 초기 데스크톱 환경부터 있었지만, 초기 시스템은 아이콘 크기를 하나만 생각했습니다. Microsoft의 1995년 문서는 LoadIcon, ExtractIcon, DrawIcon 같은 원래 함수들이 "시스템이 아이콘 크기를 하나만 정의하던 16비트 시절의 잔재"이며, 받은 이미지를 표준 큰 크기로 늘린다고 설명합니다.

Windows 95와 이후의 Windows NT 버전에서는 시스템과 셸 모두에서 작은 아이콘과 큰 아이콘을 관리했고, 새 함수(Ex 버전, LoadImage, DrawIconEx)로 특정 크기를 요청할 수 있게 되었습니다. 1995년 지침은 개발자에게 최소한 16색 16×16과 32×32, 그리고 256색 48×48을 포함하라고 권했습니다. 형식은 오래전부터 특이한 크기도 담을 수 있었고, Windows가 그것을 활용하도록 따라잡은 것입니다.

파일 하나, 여러 크기와 색 깊이

Windows는 아이콘이 필요할 때 리소스 안의 이미지를 살펴봅니다. Microsoft의 1995년 규칙에 따르면 요청된 크기에 가장 가까운 크기의 이미지를 고르고, 같은 크기가 여럿이면 화면의 색 깊이와 일치하는 것을, 없으면 그것을 넘지 않는 가장 깊은 것을 고릅니다. 작은 크기는 단순히 축소한 사본이 아닙니다. 디자이너는 16×16 버전도 알아보기 쉽도록 다시 그리는 경우가 많습니다.

이후 Microsoft의 Windows Vista 아이콘 지침은 응용 프로그램 아이콘의 전체 세트를 16×16, 32×32, 48×48, 256×256으로 정하고, 32비트(알파 포함) 이미지와 함께 원격 데스크톱 같은 상황을 위해 8비트와 4비트 팔레트 버전도 요구했습니다. 그래서 작은 .ico 하나에 이미지가 열 개 이상 들어 있기도 하며, 아이콘 편집기로 열면 바로 그것을 볼 수 있습니다.

이미지는 여러 개, 아이콘은 하나

뷰어가 다르게 생긴 이미지나 아주 작은 이미지를 보여 준다면 여러 항목 중 하나를 골랐을 가능성이 큽니다. PNG로 변환한다는 것은 보통 항목 하나(대개 가장 큰 것)를 골라 내보내는 것을 뜻합니다.

.ico 파일의 구조

구조는 한 단락으로 설명할 수 있습니다. 파일은 2바이트 워드 세 개로 된 ICONDIR 헤더로 시작합니다. 반드시 0이어야 하는 예약 값, 아이콘이면 1인 형식, 그리고 이미지 개수입니다. 그 뒤에 이미지마다 ICONDIRENTRY(각 16바이트)가 이어지며 너비, 높이, 색 수, 플레인, 픽셀당 비트 수, 이미지 데이터의 바이트 수, 파일 안에서 데이터가 시작하는 오프셋을 담습니다.

기존 이미지는 각각 DIB(장치 독립 비트맵)로, BITMAPINFOHEADER, 선택적 색상표, XOR 마스크(색 픽셀), 투명 영역을 표시하는 1비트 AND 마스크로 구성됩니다. Microsoft는 흔한 함정을 지적합니다. 헤더의 높이는 두 마스크를 합친 높이라서 실제 아이콘 높이의 두 배로 보입니다. 같은 계열로, EXE와 DLL 파일에 저장된 아이콘도 RT_GROUP_ICON과 RT_ICON 리소스로서 거의 같은 구조를 사용합니다.

Windows Vista부터 아이콘 안의 PNG

아이콘이 커지면서 비트맵 데이터는 무거워졌습니다. Windows Vista 아이콘 디코딩을 다룬 2008년 MSDN Magazine 기사는 비트맵이 커질수록 디스크와 메모리를 지나치게 차지하게 되어 Microsoft가 PNG를 택했다고 설명합니다. Windows Vista의 아이콘은 DIB 대신 PNG 이미지를 포함할 수 있어, 256×256 32비트 아이콘을 훨씬 작은 용량으로 쓸 수 있게 되었습니다. Microsoft의 Vista 지침은 256×256 이미지만 압축하고 더 작은 크기는 기존 형식으로 두라고 말합니다.

1바이트짜리 너비·높이 필드에는 256을 저장할 수 없으므로 디렉터리 항목의 0은 256으로 읽힙니다. Vista 이전에 작성된 소프트웨어에게 PNG 압축 항목은 낯선 데이터이며, Windows 자체는 잘 표시하는데도 일부 오래된 도구가 최신 .ico 파일에서 실패하는 이유 중 하나입니다.

오래된 도구, 새 아이콘

Windows XP 시절의 편집기는 최신 아이콘의 작은 비트맵 항목은 열 수 있어도 256×256 PNG 항목에서 실패하거나 파일 전체를 거부할 수 있습니다. 아이콘이 손상된 것이 아니라 도구가 ICO 안의 PNG보다 오래되었을 뿐입니다.

커서용 형제 형식 .cur

마우스 포인터는 확장자 .cur를 쓰는 거의 같은 형식을 사용합니다. Microsoft의 1995년 문서는 커서가 "아이콘과 매우 비슷하다"고 말하며, 예제 아이콘 편집기도 검사 하나만 완화하면 .CUR 파일을 읽을 수 있었다고 합니다. 헤더 형식이 아이콘의 1 대신 커서는 2라는 점입니다. 2008년 MSDN 기사도 두 번째 워드가 아이콘은 1, 커서는 2라는 규칙을 반복합니다.

커서의 중요한 추가 요소는 핫스폿, 즉 포인터의 끝으로 간주되는 픽셀 좌표입니다. Raymond Chen이 The Old New Thing에서 설명하듯, 커서 이미지 리소스는 비트맵 데이터 앞에 핫스폿의 x, y 좌표로 시작합니다. 애니메이션 커서(.ani)는 별도의 형식이며 이번 수업에서는 다루지 않습니다.

웹의 favicon.ico

.ico 형식은 브라우저를 통해 데스크톱 밖으로 나갔습니다. 1999년 3월에 출시된 Internet Explorer 5는 사용자가 사이트를 즐겨찾기에 추가하면 사이트 루트에서 favicon.ico라는 파일을 요청해 즐겨찾기 목록에 그 아이콘을 표시했습니다. Raymond Chen은 나중에 서버에 부담을 주지 않도록 IE가 매번 방문할 때가 아니라 페이지를 즐겨찾기에 추가할 때만 이 파일을 찾았다고 설명했습니다. 페이지는 HTML의 link 요소로 다른 위치를 지정할 수도 있었습니다.

오늘날 브라우저는 사이트 아이콘에 다른 형식도 받아들이지만, 많은 사이트가 여전히 루트에 favicon.ico를 둡니다. Microsoft IE 팀은 여러 크기를 담을 수 있는 ICO의 특성이 탭, 즐겨찾기, 바로 가기 등 사이트 아이콘이 나타나는 여러 곳에 잘 맞는다고 언급했습니다. 그래서 다운로드 폴더의 .ico는 웹에서 저장한 사이트 아이콘인 경우가 많습니다.

.ico를 PNG로 로컬 변환하는 방법

.ico를 .png로 이름만 바꾸면 안 됩니다. 파일은 PNG 서명이 아니라 ICONDIR 헤더로 시작하고 이미지를 여러 개 담을 수 있기 때문입니다. 실제 변환은 디렉터리를 읽고, 항목(보통 가장 큰 것)을 고르고, 비트맵 또는 PNG 데이터를 디코딩하고, 투명 마스크를 적용한 뒤 알파 채널을 유지한 일반 PNG로 저장합니다. 투명도가 필요 없을 때만 JPG를 선택하세요.

Legacy File Converter는 사용자의 Windows PC에서 .ico 파일을 열어 PNG 또는 JPG로 변환합니다. 아무것도 업로드되지 않으므로 아이콘이 고객 프로젝트나 사내 앱의 것이어도 안심할 수 있습니다. 오래된 아이콘 세트 같은 레거시 파일을 어떤 앱에서도 열 수 있는 이미지로 조용히 바꿀 수 있습니다. 관련 수업은 BMP, PNG, WebP를 참고하세요.

오래된 파일을 열 준비가 되셨나요?

무료로 시작한 뒤 일회성 $79.95 Standard 라이선스로 무제한 변환을 잠금 해제하세요. Windows 설치 프로그램을 다운로드 — 최대 10개 파일까지 전체 기능.

무료 체험

앱 전체 기능 · 최대 10개 파일

Windows 10 또는 11

언제나 같은 무료 체험 — Windows 설치 프로그램을 다운로드하고 PC에서 로컬로 변환하세요.

무료 체험 시작 — 설치 프로그램 다운로드

직접 Windows 설치 프로그램 · 오프라인 MSI

안전한가요? — 게시자, 설치 프로그램, SmartScreen 도움말

Standard 구매 — $79.95

Windows 10 또는 11이 필요합니다. 구독 없음. 100% Windows 네이티브.