김프에서 이미지를 C 헤더 파일로 저장할 수 있습니다. 나는 아래의 이미지처럼 보이는 XPM 파일로 그렇게 :GIMP에서 생성 된 헤더 픽셀 설명 XPM 이미지의 C 헤더 파일
나는 C 헤더 파일, GIMP를 출력 this C header file으로 XPM 이미지를 저장한다면.
주어진 이미지 데이터의 각 픽셀을 처리하기 위해 헤더 픽셀이 반복적으로 호출됩니다. 내가 이해할 수없는 것은 헤더 픽셀이 처음부터 데이터를 처리하는 것입니다. 내가 another person's code에서 사용을 보았을 때
#define HEADER_PIXEL(data,pixel) {\
pixel[0] = (((data[0] - 33) << 2) | ((data[1] - 33) >> 4)); \
pixel[1] = ((((data[1] - 33) & 0xF) << 4) | ((data[2] - 33) >> 2)); \
pixel[2] = ((((data[2] - 33) & 0x3) << 6) | ((data[3] - 33))); \
data += 4; \
}
, 그들은 바이트 순서가 잘못된 순서로했다 진술하고 그것을 자신을 재 배열. 그들은 이런 식으로 그것을 사용 :
char *pixel, *data = header_data;
int i = width * height;
*processed_data = pixel = malloc(i * 4 + 1);
while(i-- > 0) {
pixel[0] = ((((data[2] - 33) & 0x3) << 6) | ((data[3] - 33)));
pixel[1] = ((((data[1] - 33) & 0xF) << 4) | ((data[2] - 33) >> 2));
pixel[2] = (((data[0] - 33) << 2) | ((data[1] - 33) >> 4));
pixel[3] = 0;
data += 4;
pixel += 4;
}
하지만 정말 나를 변화 모든 비트와 무슨 일이 일어나고 있는지 이해하고 비트 또는의와 "왜 마이너스 33?"하지 않았다 기타 등등. 헤더에있는 이미지 데이터를 처리 할 대상에 대해 설명 할 수있는 사람이 있으면 크게 환영 할 것입니다.
미리 감사드립니다.
ASCII 33은'!'입니다. 나는 그 base64 또는 비슷한 것을 추측 할 것이다. –