TBitmap 매우 유용하며 강력하게 사용되는 라이브러리인데 이번에 이놈땜에 무지 애
먹었습니다.
아직까지 이 라이브러리 문제인지 시스템 문제인지 아니면 OS 문제인지는 발견 되지는
않았지만 혹시 다른분들도 이런 경우가 생길 수 있을지 몰라 글을 올립니다.
내용인 즉 이렇습니다.
이 놈이 일반 비트맵이나 JPEG를 직접 불러올때는 문제가 없습니다.
다만 RAW 데이타를 화일로 읽어서 이것을 PIXERS에 직접 매핑할 때 문제가 생깁니다.
예를 들어
word image_data[100] ;
int cnt = 0 ;
Load_Image("image.raw",image_data) ;
Graphics::TBitmap* Mbmp ;
Mbmp = new Graphics::TBitmap ;
for(int row=0 ; row < 10 ; row++)
for(int col = 0 ; col < 10 ; col++)
{
Mbmp->Canvas->Pixels[col][row] = (TColor)image_data[cnt++] ;
}
위와 같은 코드가 있을 경우 Mbmp 에 들어가는 데이타 값이 PC 에 따라
다르게 들어 갑니다.
저같은 20대의 노트북에서 2 부류로 나누어서 한 부류는 정확히 들어가고 한 부류는 엉뚱한 값이
즉 변형된 값이 들어 갔습니다.
엉뚱한 값들도 나름대로 다 공통적으로 똑같이 들어갑니다. 참으로 어이가 없더군요...
한대의 PC에서 컴파일한 실행화일이 20대의 컴퓨터에서 2가지의 경우를 출력하고 있었으니...
꼭이런식의 값이었습니다. 한 픽셀만 예를 든다면
0x00383020 -> 이것이 정확한 값이라면 한 부류는 이값이 정확하게 들어가는데
0x00393021 -> 한 부류는 이렇게 값이 변형되어 들어 값니다.
물론 들어가지 전에 변형되는 것이 아니라 들어가면서 변형 됩니다.
정말 당황스러웠습니다. 혹시나 이런 경우가 생기실것 같아 제 경험을 올립니다.
우리 부장님 왈 " 10년에 한번 나올까 말까 하는 경우" 라나 ...
|