
우리가 알고 있듯이 모든 파일은 단순히 데이터를 담는 컨테이너입니다. PNG
파일도 이 규칙에서 예외는 아닙니다.
PNG 파일은 기본적으로 컬러 픽셀의 직사각형 격자를 참조하므로 그다지 복잡할 수 없습니다. 확실히 비디오나 GIF만큼 복잡하지는 않습니다.
제 질문은 메모장만 사용하여 아무것도 없는 상태에서 어떻게 PNG를 만들 수 있느냐는 것입니다. 그런 다음 이 파일을 이미지로 인식하는 브라우저(예: Chrome)에서 열 수 있습니다.
4개의 색상 픽셀로 구성된 작은 정사각형이 좋은 예가 될 것입니다.
그림판을 사용하여 진행 상황을 확인하면 흥미로운 결과를 얻을 수 있습니다.
그림판을 사용하여 다음과 같은 PNG 파일을 만드는 경우(2x2픽셀로 매우 작으므로 확대해야 할 수도 있음)
결과 텍스트 파일은 다음과 같습니다.
IHDR ýÔšs sRGB ®Îé gAMA ±üa pHYs à ÃÇo¨d IDATWcè`ýÿ‰Ai£½Ç !ß=î_— IEND®B`‚
하지만 뒤에서 무슨 일이 벌어지고 있는 걸까요?
명확히 하자면 문제는 PNG 파일을 만드는 방법이 아니라 텍스트를 사용하여 특정 기준(예: 무지개의 7가지 색상 선)과 일치하는 PNG 파일을 만드는 방법입니다.
답변1
메모장만 사용하여 아무것도 없는 상태에서 어떻게 PNG를 만들 수 있습니까?
큰 어려움이 있습니다. 16진수 편집기를 사용하는 것이 더 쉬울 수 있지만 여전히 어렵습니다.
기본적으로 다음과 일치하는 형식으로 파일을 만들어야 합니다.PNG 사양.
파일 헤더는 다음 십진수 값으로 구성된 PNG 서명으로 시작해야 합니다.
137 80 78 71 13 10 26 10
메모장을 사용하여 10진수 10(줄 바꿈)을 입력할 수 없으므로(따라서 16진수 편집기 사용 제안) 파일을 생성합니다.
또한 CRC 값을 계산하고 복잡한 청크 순서 지정 규칙을 많이 따라야 합니다.
위에 링크된 사양을 읽어보면 손으로 PNG를 만드는 것이 얼마나 복잡한지 알 수 있습니다.
PNG를 지원하는 그래픽 편집기를 사용하는 것이 훨씬 쉬울 것입니다.
답변2
답변3
답변4
실제로 파일은 단순한 데이터 컨테이너가 아닙니다. 이는 이진 데이터 스트림입니다. 모든 파일 유형은 바이너리 스트림의 어떤 부분이 어떤 데이터인지에 대한 레이아웃이 다릅니다.
메모장에서 이미지를 열면 바이너리 스트림이 인간 언어의 문자로 해석됩니다. 그러나 우리는 특정 음성 언어의 문자로 정의한 것에 해당하는 바이너리를 사용하여 파일을 만들지 않습니다. 따라서 메모장은 PNG 인터프리터에서 인식할 수 있는 데이터를 추가하고 제거할 수 있도록 바이너리 스트림을 유용하게 해석할 수도 있고 그렇지 않을 수도 있습니다.
아무것도 없는 상태에서 PNG 파일을 만드는 방법에 대해 정말로 궁금하다면 숫자(가장 바람직하게는 2진수 또는 16진수)를 사용하고 디스크에서 2진수 스트림을 읽고 이를 16진법으로 표시하는 16진수 편집기 프로그램을 사용하여 수행해야 합니다. 너.
참조하세요DavidPostill의 답변