Модераторы: Snowy, Alexeis, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Определить BPP для JPEG 
V
    Опции темы
Alexeyt
  Дата 7.3.2008, 07:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 332
Регистрация: 15.9.2006
Где: около Москвы

Репутация: 1
Всего: 2



Hi

Как определить число цветов (bpp, bits per px)
для Jpeg?
Используется Jpeg (стандартный модуль)


PM WWW   Вверх
Alexeis
Дата 7.3.2008, 11:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 55
Всего: 459



Юзаем Интел Jpeg (ijl.pas)
Код

procedure TForm1.FormCreate(Sender: TObject);
var
  jph : TJPEG_CORE_PROPERTIES;
begin
  FillChar(jph, SizeOf(TJPEG_CORE_PROPERTIES), 0);
  ijlInit(@jph);
  jph.JPGFile := PChar('1.jpg');
  ijlRead(@jph, IJL_JFILE_READPARAMS);
end;

Все что нужно есть в jph.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Alexeyt
Дата 7.3.2008, 11:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 332
Регистрация: 15.9.2006
Где: около Москвы

Репутация: 1
Всего: 2



Спасибо, +1

А без IJL -нельзя?
А то брать ijl15.dll не хочется, размер программы вырастет, и из-за ничего - из-за простого чтения BPP файла...

PM WWW   Вверх
Alexeis
Дата 7.3.2008, 11:48 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 55
Всего: 459



Цитата(Alexeyt @  7.3.2008,  10:18 Найти цитируемый пост)
А без IJL -нельзя?

  Можно, но сложнее. Где-то тут есть темка про чтение размеров жпеги вручную. Вроде я там довел до ума алогоритм поиска структуры-описания jpeg. На самом деле в той структуре помимо  высоты и ширины есть еще кой какие данные. 
  
  Однако если нужно отображать jpegу то я советую отказаться от борландовского jpeg-a. Он не универсальный (отображает не все правильные картинки) + искажения вносимые им при распаковке больше чем у Intel Jpeg. Тут еще есть возможность доставания превьюшек из jpeg-a (обычно фотоаппараты запихивают в жпегу еще и их).

Добавлено через 12 минут и 13 секунд
http://forum.vingrad.ru/index.php?show_typ...howtopic=105564

Значит в том сегменте есть следующая инфа
Цитата

SOF0: Начало Кадра 0:
    * $ff, $c0 (SOF0)
    * длина (старший байт, младший байт), 8+components*3
    * точность данных (1 байт) в битах/единицу, обычно 8 (12 и 16 не поддерживается большинством программного обеспечения)
    * высота изображения (2 байта, High-Low), должно быть >0, если DNL не поддерживается
    * ширина изображения (2 байта, High-Low), должно быть >0, если DNL не поддерживается
    * количество компонентов (1 байт), обычно 1 = черно-белый, 3 = цвет YCbCr или YIQ, 4 = цвет CMYK)
    * для каждого компонента: 3 байта

    * идентификатор компонента (1 = Y, 2 = Cb, 3 = Cr, 4 = I, 5 = Q)
    * показатели дискретизации (бит 0-3 вертикальной, 4-7 горизонтальной)
    * номер таблицы квантования


  Т.е. дополнительно можно достать еще bpp.

Для того чтобы достать разрешение в точках/дюйм нужно будет еще дополнительно найти блок
Цитата

APP0: JFIF маркер сегмента:

    * $ff, $e0 (APP0)
    * длина (старший байт, младший байт), должна быть >= 16
    * 'JFIF'#0 ($4a, $46, $49, $46, $00), идентифицирует JFIF
    * номер общей версии, должен быть 1 (в противном случае ошибка)
    * номер подверсии, должен быть 0..2 (в противном случае попытка декодирования по-другому)
    * единица для x/y разрешения:

0 = нет никаких единиц, x/y-отношение определяет соотношение аспекта

1 = x/y-разрешение в точках/дюйм

2 = x/y-разрешение в точках/сантиметр

    * x-разрешение (старший байт, младший байт), должно быть <> 0
    * y-разрешение (старший байт, младший байт), должно быть <> 0
    * ширина предварительного просмотра (1 байт)
    * высота предварительного просмотра (1 байт)
    * n байт для предварительного просмотра (RGB 24 бит) n = ширина*высота*3




--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Звук, графика и видео"
Girder
Snowy
Alexeis

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • По вопросам разработки игр стоит заглянуть сюда

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема »


 




[ Время генерации скрипта: 0.0472 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.