![]() |
|
#1
|
|||
|
|||
![]() Первые 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/ Последний раз редактировалось ART, 29.03.2013 в 11:56. |