|
#1
|
||||
|
||||
SGI-формат
Кто-нибудь знает про этот формат растровых изображений? Помогите реализовать программу, открывающую изображения такого формата. Или подсобите умным советом каким-нибудь
|
#2
|
||||
|
||||
по методе делай там легко все. только нужно учитывать, что порядок байт другой. еще лучше использовать TFileStream, а не BlockRead
РГРТУ - ФВТ - Системы Автоматизированного ПРоектирования. ت |
#3
|
||||
|
||||
1) Читать лучше в запись или в массив?
2) Как прочитать один из пунктов заголовка, который 80байт, при компиляции ошибка всё время деления на ноль вылетает? |
#4
|
||||
|
||||
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); ... РГРТУ - ФВТ - Системы Автоматизированного ПРоектирования. ت |