Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Графика и игры
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 16.10.2010, 23:16
Аватар для nomen-nescio
nomen-nescio nomen-nescio вне форума
Прохожий
 
Регистрация: 26.09.2010
Адрес: Рязань
Сообщения: 20
Репутация: 10
По умолчанию SGI-формат

Кто-нибудь знает про этот формат растровых изображений? Помогите реализовать программу, открывающую изображения такого формата. Или подсобите умным советом каким-нибудь
Ответить с цитированием
  #2  
Старый 16.10.2010, 23:47
Аватар для KOOL
KOOL KOOL вне форума
Активный
 
Регистрация: 06.01.2008
Адрес: Рязань
Сообщения: 306
Версия Delphi: 2009
Репутация: 6150
По умолчанию

по методе делай там легко все. только нужно учитывать, что порядок байт другой. еще лучше использовать TFileStream, а не BlockRead
__________________
РГРТУ - ФВТ - Системы Автоматизированного ПРоектирования. ت
Ответить с цитированием
  #3  
Старый 17.10.2010, 00:03
Аватар для nomen-nescio
nomen-nescio nomen-nescio вне форума
Прохожий
 
Регистрация: 26.09.2010
Адрес: Рязань
Сообщения: 20
Репутация: 10
По умолчанию

1) Читать лучше в запись или в массив?
2) Как прочитать один из пунктов заголовка, который 80байт, при компиляции ошибка всё время деления на ноль вылетает?
Ответить с цитированием
  #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);
...
__________________
РГРТУ - ФВТ - Системы Автоматизированного ПРоектирования. ت
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 10:10.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter