Russian Qt Forum
Май 10, 2024, 22:26 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Есть ли возможность заполнить QImage из нескольких потоков?  (Прочитано 3018 раз)
crazymonkey
Гость
« : Июль 11, 2014, 11:09 »

Вводная такова: у меня есть файл размером 100 мегабайт внутри у него значения амплитуды сигнала.

Соответственно как сделано сейчас:
Читается пачками байт. Заполняется QImage построчно.
Количество строк в изображении я знаю заранее.

Вопрос: могу ли я заполнить OImage в несколько потоков? и что для этого нужно сделать? я что-то слышал про штуку "отображение файла в память" но не знаю как её применить.

Огромное спасибо за ваше время.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #1 : Июль 11, 2014, 11:12 »

QImage и так прекрасно "отображен". Разбиваете на полосы (по числу заполняющих ниток) дальше см QImage::scanLine
Записан
crazymonkey
Гость
« Ответ #2 : Июль 11, 2014, 11:28 »

QImage и так прекрасно "отображен". Разбиваете на полосы (по числу заполняющих ниток) дальше см QImage::scanLine

А можно "для дураков" расписать поподробнее, если вам не сложно ?
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #3 : Июль 11, 2014, 11:45 »

Пример ф-ция заполнения
Код
C++ (Qt)
void FillImagePart( QImage & img, int beg, int end, QRgb color )
{
Q_ASSERT(img.format() == QImage::Format_ARGB32);
for (int y = beg; y < end; ++y) {
  QRgb * dst = (QRgb *) img.scanLine(y);
  for (int x = 0; x < img.width(); ++x)
    dst[x] = color;
}
}
Ну и один поток заполняет напр строки 0..100, второй 100..200 и.т.д.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.097 секунд. Запросов: 23.