Тема: SGI-формат
Показать сообщение отдельно
  #4  
Старый 17.10.2010, 00:12
Аватар для KOOL
KOOL KOOL вне форума
Активный
 
Регистрация: 06.01.2008
Адрес: Рязань
Сообщения: 306
Версия Delphi: 2009
Репутация: 6150
По умолчанию

1) заголовок - запись, но считывать каждое поле надо отдельно, таблицы для сжатых изображений - в 2 массива, само изображение - в TBitmap
2)
Код:
  //Заголовок SGI-файла
  TSGIHeader = packed record
    Magic : Word;                  //474 - Сигнатура
    Storage : byte;                //1=сжатие
    BPC : byte;                    //1/2 байт на цвет
    Dimension:word;                //1=один канал, 1 строка; 2=1 канал много строк;
                                   //  3=ZSize-число каналов
    XSize:word;                    //Ширина
    YSize:word;                    //Высота
    ZSize:word;                    //1=монохромный; 3=RGB; 4=RGBA
    PixMin:cardinal;               //$00 - минимальное значение пикселя
    PixMax:cardinal;               //$FF - максимальное значение пикселя
    Dummy1:cardinal;               //заглушка
    Name:array[1..80] of AnsiChar; //Имя изображения; Name[80]=#0
    ColorMap:cardinal;             //Режим хранения пикселей
                                   //0=Нормальный; 1=Смешанный; 2=Палитровый; 3=Это палитра
    Dummy2:array[1..404] of byte;  //Заглушка
  end;
...
var SGIHeader : TSGIHeader;

...

procedure ReadHeader(S:TFileStream);
...
S.Read(SGIHeader.Name[1], 80);
...
S.Read(SGIHeader.Dummy2[1], 404);
...
__________________
РГРТУ - ФВТ - Системы Автоматизированного ПРоектирования. ت
Ответить с цитированием