Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.03.2013, 07:15   #1
Puhovoi
Пользователь
 
Аватар для Puhovoi
 
Регистрация: 16.10.2010
Сообщений: 47
По умолчанию Альтернатива TJpegImage / ошибка Error creating device context

Доброго времени суток!

В tmemorystream загружено изображение в формате Jpeg. Нужно без использования промежуточного конвертирования в TBitMap получить доступ к отдельным пикселам. Поиск альтернативных компонентов с доступом к канве результатов не дал.

Проблема заключается в том, что при обработке 10+ тысяч изображений вываливается ошибка "Error creating device context".

Код функции:

Код:
  dump.position := 0;
  imag := tbitmap.create;
  tjpg := tjpegimage.create;
  try
    tjpg.loadfromstream (dump);
  except
    freeandnil (imag);
    freeandnil (tjpg);
    exit;
  end;
  try
    imag.assign (tjpg);
  except
    freeandnil (imag);
    freeandnil (tjpg);
    exit;
  end;

  ... // проходим по битмапу

  freeandnil (imag);
  freeandnil (tjpg);
Используется 4-мя потоками одновременно.

Заранее спасибо за ответы!
Puhovoi вне форума Ответить с цитированием
Старый 29.03.2013, 11:47   #2
Puhovoi
Пользователь
 
Аватар для Puhovoi
 
Регистрация: 16.10.2010
Сообщений: 47
По умолчанию

Проблема решилась заменой на FastDIB с использованием Intel JPEG Library. Шедший в комплекте ijl15.dll пришлось заменить на ijl20.dll (первая в многопоточном режиме работает крайне нестабильно, раз на раз не приходится).

Код:
imag.position := 0;
imag.readbuffer (buff, 2);
if buff = $D8FF then
begin
  imag.position := 0;
  fdib := tfastdib.create;
  loadjpgstream (fdib, imag, false);

  ... // проходим по битмапу

  freeandnil (fdib);
end;
Puhovoi вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
GetDC TThread Synchronize - error creating window device context ZBEP Общие вопросы Delphi 2 28.08.2012 23:50
ошибка на устройстве \Device\Harddisk1\D legendary Компьютерное железо 0 10.11.2010 19:25
Ошибка конвертации TJPegImage to a TJpegImage Lokos Общие вопросы Delphi 8 20.10.2010 11:00
Error Creating cursor handle Dmitry333 Помощь студентам 1 29.03.2010 23:16
error creating cursor handle? Geddar Общие вопросы Delphi 2 31.05.2008 15:19