ICO / CUR 아이콘 분석기
윈도우 .ico와 .cur 파일을 브라우저에서 열어 안에 든 크기, PNG·BMP 페이로드, 핫스팟, AND 마스크, 잘못된 항목을 확인합니다.
사용법
- .ico나 .cur 파일을 상자에 끌어다 놓으세요. 파비콘, .exe에서 꺼낸 프로그램 아이콘, 커서 파일 모두 열리며 파일은 탭 밖으로 나가지 않습니다.
- 개요에서 종류와 크기 목록을 확인하세요. 이름은 .ico인데 종류가 커서라면 헤더 쪽을 믿으세요. 형식을 정하는 것은 확장자가 아닙니다.
- 16·32·48·256 칩으로 커버 범위를 보세요. 16이 없다면 브라우저 탭에는 큰 아이콘을 기계적으로 줄인 그림이 나오고 있을 가능성이 큽니다.
- 점검 결과를 읽으세요. 파일 끝을 넘어가는 페이로드, 겹치는 페이로드, 항목과 어긋나는 IHDR은 실제 결함이고, 항목 순서가 특이한 것은 취향의 문제일 뿐입니다.
- PNG가 아닌 이미지는 BMP 표를 펼쳐 보세요. 실제 높이(biHeight의 절반), 팔레트, 행 간격, AND 마스크의 시작 위치가 나오며 직접 판독기를 만들 때 필요한 값들입니다.
자세한 설명
펼치기접기
아이콘 파일은 한 장의 그림이 아니라 작은 아카이브입니다. 6바이트 헤더, 16바이트짜리 항목이 이어지는 디렉터리, 그리고 이미지마다 하나씩의 페이로드로 이루어집니다. 이 페이지는 그 아카이브를 열어 실제로 어떤 크기가 들어 있는지, 윈도우와 브라우저가 찾는 16·32·48·256이 그 안에 있는지, 어느 이미지가 PNG로 어느 것이 원시 비트맵으로 저장되었는지, 각각 몇 바이트를 쓰는지 보여 줍니다. 이 형식에는 거의 모든 판독기가 걸려 넘어지는 두 가지 함정이 있고 여기서는 둘 다 처리합니다. 너비나 높이 바이트의 0은 0이 아니라 256을 뜻하며, 멀쩡한 256 × 256 파비콘이 허술한 도구에서 0 × 0으로 보이는 이유가 바로 이것입니다. 또 팔레트 크기 다음의 두 칸은 타입에 따라 뜻이 달라집니다. 아이콘에서는 색 평면 수와 픽셀당 비트 수, 커서에서는 핫스팟 x와 y입니다. 그래서 .cur를 아이콘으로 읽으면 말이 안 되는 색 깊이가 나오고, 형식을 정하는 것은 파일 이름이 아니라 헤더의 타입 값이므로 확장자는 참고가 되지 않습니다. BMP 이미지는 끝까지 해석합니다. 앞에 파일 헤더가 없는 BITMAPINFOHEADER, 컬러 이미지와 1비트 투명 마스크가 한 비트맵에 쌓여 있어서 일부러 실제 높이의 두 배로 적힌 biHeight, 1·4·8비트 이미지의 팔레트, 4바이트로 맞춘 행, 그리고 AND 마스크의 정확한 위치와 길이까지 — 마스크는 자체적인 여백 규칙이 있어 판독기가 두 번째로 자주 틀리는 지점입니다. 32비트 이미지가 실제 알파를 담고 있으면 마스크가 사실상 불필요하다고 알려 주고, 알파가 전부 0이면 알파를 믿는 환경에서 아이콘이 사라지므로 경고합니다. PNG 이미지는 IHDR을 읽어 이를 가리키는 디렉터리 항목과 비교합니다. 디렉터리와 페이로드가 크기를 두고 어긋나는 것은 흔하면서도 눈에 띄지 않는 결함입니다. 모든 이미지를 그려 주기도 합니다. PNG는 브라우저에 넘기고 BMP는 팔레트·여백·아래에서 위로의 행·마스크까지 직접 해석합니다. 비트맵 본문만 브라우저에 넘기면 두 배 높이로 그려지고 투명도가 사라지기 때문입니다. 점검 결과는 문제를 조용히 넘어가지 않고 이름을 붙여 보여 줍니다. 파일 끝을 넘어가는 페이로드, 서로 겹치는 페이로드, 같은 크기를 선언한 두 항목, 관례인 작은 것부터의 순서를 벗어난 배열, 항목과 어긋나는 헤더입니다. 다만 그 그림이 16픽셀에서 보기 좋은지까지는 알려 주지 못합니다. 그건 미리보기를 보고 판단할 몫입니다.
자주 묻는 질문
256 × 256 아이콘이 어떤 도구에서는 왜 0 × 0으로 보이나요?
디렉터리 항목의 너비와 높이가 각각 1바이트인데 256은 1바이트에 들어가지 않기 때문입니다. 형식은 0을 256으로 정의해 이 문제를 풀었고, 그래서 256 × 256 이미지는 두 크기 바이트가 모두 0으로 기록됩니다. 바이트를 곧이곧대로 읽는 판독기는 0 × 0으로 보고하거나 아예 빈 항목으로 여겨 건너뜁니다. 이 페이지는 그 규칙을 적용하므로 선언 크기가 256 × 256인 줄의 항목 바이트 칸에는 0, 0이 그대로 표시됩니다. 아이콘이 256픽셀보다 큰 이미지를 담을 수 없는 이유도 같습니다. 항목에 그것을 적을 자리가 없습니다.
ICO와 CUR 파일은 무엇이 다른가요?
구조는 거의 같습니다. 같은 헤더, 같은 디렉터리, 같은 페이로드입니다. 다른 것은 두 가지입니다. 헤더의 타입 값이 아이콘은 1, 커서는 2이고, 아이콘이 색 평면과 픽셀당 비트 수로 쓰는 16비트 두 칸이 커서에서는 핫스팟 x와 y가 됩니다. 실제로 클릭이 일어나는 그림 안의 지점이지요. 그래서 커서를 아이콘으로 읽으면 색 깊이가 3 같은 무의미한 값으로 나옵니다. 확장자는 양쪽 모두 믿을 수 없으므로 이 페이지는 타입 값을 읽어 깊이와 핫스팟 칸을 바꿔 보여 주고, 이름과 헤더가 어긋나면 그 사실을 알려 줍니다.
biHeight는 왜 이미지 높이의 두 배인가요?
BMP 이미지는 사실 두 비트맵이 하나로 쌓인 것이기 때문입니다. XOR 비트맵이라 부르는 컬러 이미지와, 그 아래에 어느 픽셀로 화면이 비쳐 보일지 정하는 1비트 AND 마스크입니다. BITMAPINFOHEADER가 둘을 한꺼번에 설명하므로 높이 칸도 둘을 합쳐 셉니다. 실제 높이는 그 절반입니다. 마스크는 두 가지로 틀리기 쉽습니다. 행 여백이 컬러 행과 별개로 4바이트에 맞춰지므로 너비 24픽셀짜리 마스크의 한 행은 3바이트가 아니라 4바이트이고, 픽셀당 1비트로 채워지며 켜진 비트가 투명을 뜻합니다. 이 페이지는 마스크 위치와 행 간격을 보여 주므로 직접 만든 판독기의 계산을 대조해 볼 수 있습니다.
아이콘 이미지는 PNG로 넣어야 하나요, BMP로 넣어야 하나요?
둘 다 적법하고 한 파일에 섞을 수도 있으며 비스타 시절 아이콘은 실제로 그렇게 만듭니다. 경험칙은 256 × 256은 PNG로 넣으라는 것입니다. 마스크까지 붙은 256 비트맵은 이미지 하나에 약 256KB가 들지만 PNG는 그 일부로 줄여 줍니다. 작은 크기는 호환을 위해 보통 BMP로 두는데, 윈도우 XP 셸에서는 PNG 이미지 자리에 아무것도 나오지 않기 때문입니다. 요즘 브라우저는 둘 다 문제없이 읽습니다. 디렉터리에는 어느 쪽인지 적히지 않으므로 판독기는 각 페이로드의 앞 8바이트에서 PNG 서명을 찾아야 하고, 여기 페이로드 칸이 보여 주는 것이 바로 그 결과입니다.
32비트 이미지의 알파가 비었다고 나오면 무엇이 깨지나요?
알파를 존중하는 환경에서는 그 이미지가 보이지 않고, AND 마스크를 쓰는 환경에서는 멀쩡합니다. 두 방식은 함께 존재합니다. 32비트 BMP 이미지는 픽셀마다 알파 바이트를 갖는 동시에 1비트 마스크도 싣습니다. 필요 여부와 상관없이 형식이 마스크를 요구하기 때문입니다. 마스크는 제대로 쓰면서 알파를 0으로 남기는 내보내기 도구는 윈도우 셸에서는 멀쩡해 보이고 브라우저 탭에서는 사라지는 아이콘을 만듭니다. 반대로 진짜 알파가 있고 마스크가 전부 0인 것이 요즘의 정상적인 모양이며, 그때는 마스크가 불필요하다고 표시합니다.
디렉터리와 페이로드가 크기를 다르게 말하면 무슨 뜻인가요?
둘 중 하나가 거짓말을 하고 있고, 결과는 누가 읽느냐에 달렸다는 뜻입니다. 윈도우는 디렉터리 항목에서 크기를 가져오므로 48 × 48이라고 적힌 항목 아래 32 × 32 PNG가 들어 있으면 그림이 흐릿하게 늘어난 채로 고정됩니다. 어떤 판독기는 반대로 페이로드를 믿고 약속한 것과 다른 크기를 조용히 그립니다. 이런 불일치는 대개 그림 크기를 바꾸고 페이로드만 새로 쓴 편집기에서 생기며, 양쪽을 함께 읽지 않으면 드러나지 않습니다. 이 페이지가 IHDR과 BITMAPINFOHEADER를 각각을 가리키는 항목과 비교하는 이유입니다.
관련 도구
Favicon 생성기 (멀티 사이즈 PNG)
이미지 하나로 10개 사이즈 favicon PNG 생성(16·32·48·64·96·128·180·192·256·512) — HTML 스니펫까지.
파일
BMP / DIB 파일 분석기
브라우저에서 .bmp와 .dib를 엽니다. 헤더 버전, 비트 심도, 행 순서, 압축, 채널 마스크, 팔레트, 바이트 배치까지 그대로 보여 줍니다.
파일
WebAssembly 모듈 인스펙터
브라우저에서 .wasm 파일을 분석합니다. 섹션 크기, 타입까지 포함한 임포트와 익스포트, 메모리 페이지, start 함수, name과 producers 섹션을 보여줍니다.
개발
PNG 청크 인스펙터
.png 파일 드롭 → 포함된 모든 청크 확인 — IHDR·IDAT·tEXt 메타데이터·IEND — 크기·CRC·critical/ancillary/safe-to-copy 플래그 포함.
파일
이미지 둥근 모서리
이미지에 둥근 모서리·완전 원형 마스크·코너별 반경 적용 — 투명도 체커보드 미리보기, PNG·JPEG 다운로드.
이미지
ZIP 내용 보기
ZIP 파일을 드롭하면 내부 파일을 풀지 않고도 목록·크기·미리보기·개별 내려받기까지 가능합니다.
파일