Первые 2048 байт - заголовок со служебной информацией (не имеет особого значения, пропускаем).
С 2048 байта идет информация о 2048*2500 пикселях изображения, оттенки серого, 2 байта на пиксель, т.е. 10240000 байт на само изображение. Тип данных в пикселе тоже не известен.
Проблема в том, что не получается вывести нормальное изображение, хоть там и понятно, что это рентгенограмма грудной клетки.
Код:
var
w: Word;
F: TFileStream;
x, y, count, gray: Integer;
Buffer: array [0..1] of byte;
begin
F := TFileStream.Create('ImgFile', fmOpenReadWrite);
count := 0;
for y := 1 to 2500 do begin
for x := 1 to 2048 do begin
F.Seek(2047 + 2 * count, soFromBeginning);
F.Read(Buffer, Length(Buffer));
w := MakeWord(Buffer[0], Buffer[1]);
gray := Round(256 * w / 2047);
Image1.Canvas.Pixels[x, y] := RGB(gray, gray, gray);
count := count + 1;
end;
Application.ProcessMessages;
end;
F.Free;
Файл:
http://nekaka.com/d/R635YFwPqV
Статья, которой пользовался:
http://www.delphimaster.ru/articles/pixels/