"펜과 종이"를 사용하여 비트맵 이미지를 만드는 방법은 무엇입니까?

"펜과 종이"를 사용하여 비트맵 이미지를 만드는 방법은 무엇입니까?

이것은 빨간색으로 색칠된 5x5 비트맵의 16진수 덤프입니다.

여기에 이미지 설명을 입력하세요

(0,255,0)내 질문은 비트맵의 색상을 예를 들어 녹색 이나 해당 문제의 다른 색상 으로 변경하기 위해 (그림판과 같은 도구를 사용하지 않고) 16진수 값만 변경하려면 어떻게 해야 합니까 ?

그림판과 같은 도구는 비트맵을 저장하기 위해 그리는 픽셀을 어떻게 16진수로 변환합니까?

답변1

BMP에 대한 문서는 다음과 같습니다.https://en.wikipedia.org/wiki/BMP_file_format#Pixel_array_.28bitmap_data.29

짧은 형식은 다음과 같습니다.

  • 14바이트 BMP 헤더(파일 정보)
  • 40바이트 DIB 헤더(이미지 정보)
  • 픽셀

DIB 헤더 섹션 내에서 픽셀 크기에 대한 두 값 5와 24비트 색상(RGB)에 대한 값 16진수(18)를 볼 수 있습니다.

특히 흥미로운 것은 여기에 있는 것과 유사한 2x2 이미지에 대한 HEX 덤프를 보여주는 Wiki의 "예제 1"입니다. 몇 가지 참고사항:

  • 시각적으로 바이트는 두 자리 쌍입니다(이미지의 첫 번째 바이트는 42입니다).
  • 계산은 0부터 시작하므로 "오프셋 31"은 32번째 바이트입니다.
  • 숫자는 모두 HEX이므로 hex(10) = dec(16)입니다. 변환하는 데 도움이 필요한 경우 "프로그래머 모드"로 설정된 Windows 계산기를 사용할 수 있습니다.
  • "바이트 순서"는 낮음에서 높음이므로 "05 00 00 00"의 4바이트 값은 "00 00 00 05"로 이해되어야 합니다.
  • bmp의 RGB 삼중항이 반전되었습니다.

16진수 덤프 및 문서에 따르면 이미지는 각 픽셀을 압축되지 않은 RGB 삼중항으로 저장합니다. 첫 번째 픽셀은 삼중항 24 1c ed이지만 이는 반대이므로 실제로는 빨간색인 hex(ed1c24)입니다. 005픽셀의 모든 행 뒤에는 패드 가 있습니다 . 문서에는 이것이 "바이트 정렬"을 위한 것이라고 나와 있습니다.

따라서 픽셀을 빨간색에서 파란색으로 변경하려면 세 쌍 중 하나를 에서 로 변경할 수 24 1c ed있습니다 ed 1c 24.

소프트웨어의 경우 Hex Editor로 파일(또는 복사본)을 열고 변경한 후 저장합니다. 단순히 "텍스트 편집 모드"에서 텍스트 편집기를 사용하는 것만으로는 충분하지 않습니다. 텍스트 기호 "0"은 이진수 값 0과 동일하지 않기 때문입니다.

오픈 소스 Notepad++에는 플러그인을 통한 16진수 편집 기능이 있습니다.

Paint가 이미지를 만드는 방법에 대한 더 큰 질문과 관련하여 프로그램은 문서와 표준을 사용하여 프로세스를 자동화합니다. 대부분 관습의 문제입니다. "이미지 스트림"(픽셀 데이터)은 메모리에 저장되고 조작됩니다.비슷한압축되지 않은 이미지 파일에서 볼 수 있는 방식입니다.

관련 정보