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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.03.2013, 08:58   #1
Puhovoi
Пользователь
 
Аватар для Puhovoi
 
Регистрация: 16.10.2010
Сообщений: 47
Радость TBitMap / TJpegImage в потоках

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

Столкнулся с непонятной проблемой. Есть некая функция, загружающая Jpeg изображение, конвертирующая в bitmap и обрабатывающая его. На этапе отладки, без использования потоков все идеально.

При использовании функции из потоков (4+) происходят интересные вещи - одна и та же картинка обрабатывается по разному, дает совершенно разные результаты на выходе.

Есть ли какие-либо особенности использования из потоков классов TBitMap & TJpegImage?

P.s.: что используется: TRect, TBitMap, TJpegImage, TList<Record>, общий доступ к массиву записей (чтение).

Заранее спасибо за ответы.
Puhovoi вне форума Ответить с цитированием
Старый 10.03.2013, 09:47   #2
Kix.IV
Участник клуба
 
Регистрация: 11.08.2012
Сообщений: 1,226
По умолчанию

Возможно ты не правильно реализовал потоки, например используешь один и тот же контейнер с изображением.
Без кода трудно сказать в чём проблема.
Kix.IV вне форума Ответить с цитированием
Старый 10.03.2013, 10:18   #3
Puhovoi
Пользователь
 
Аватар для Puhovoi
 
Регистрация: 16.10.2010
Сообщений: 47
По умолчанию

Код:
function xxxx (const dump : tmemorystream) : string;
var
  tjpg : tjpegimage;
  imag : tbitmap;
begin
  result := '';
  if dump.size < 50 then
    exit;
  imag := tbitmap.create;
  tjpg := tjpegimage.create;
  try
    dump.position := 0;
    tjpg.loadfromstream (dump);
    imag.assign (tjpg);
  except end;
  freeandnil (tjpg);
  if imag.width = 130 then
  begin
  
  ///
  
  end;
end;
Функция используется в 4-х одинаковых потоках, каждый грузит изображение по сети в m-stream, отдает функции.
Puhovoi вне форума Ответить с цитированием
Старый 10.03.2013, 11:37   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Сдается мне что нужно в конце процедуры всетки освобождать imag иtjpg.
Все равно мусорить после себя нехорошо.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 10.03.2013, 12:22   #5
Puhovoi
Пользователь
 
Аватар для Puhovoi
 
Регистрация: 16.10.2010
Сообщений: 47
По умолчанию

Я скинул отредактированный кусочек, показывающий глючный момент (только начало, а не всю функцию). Само собой все освобождается, как нужно
Puhovoi вне форума Ответить с цитированием
Старый 10.03.2013, 12:29   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

А каких ответов ждете? Показанный кусок кода одну и ту же картинку всегда будет одинаково обрабатывать. Ищите прокол в вашей дальнейшей обработке
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 10.03.2013, 12:34   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Тогда я пас что-то прогнозировать...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 10.03.2013, 16:19   #8
Kix.IV
Участник клуба
 
Регистрация: 11.08.2012
Сообщений: 1,226
По умолчанию

Цитата:
Я скинул отредактированный кусочек, показывающий глючный момент
Если ты знаешь, что это глючный кусок, так исправь его. Зачем писать на форум?
Kix.IV вне форума Ответить с цитированием
Старый 10.03.2013, 16:49   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Kix.IV
Автор не знает, а предполагает, поэтому и написал.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с TJPEGImage ssman Мультимедиа в Delphi 2 29.05.2012 18:31
Ошибка конвертации TJPegImage to a TJpegImage Lokos Общие вопросы Delphi 8 20.10.2010 11:00
TGifImage TJpegImage TPngImage FantasyDD Компоненты Delphi 0 24.05.2010 15:41
Попиксельный доступ к TJPEGImage Serge_Bliznykov Общие вопросы Delphi 4 29.09.2009 22:57
TMemorystream -> TJPEGimage ( используя сеть ) Lime Работа с сетью в Delphi 2 17.02.2009 03:14