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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Формат QImage  (Прочитано 3504 раз)
deefox
Гость
« : Сентябрь 14, 2016, 09:43 »

Доброе утро. Хотелось бы узнать по поводу формата. я использую всего лишь 1 байт для рисования изображения.

текущий формат использую Format_RGB32 и получается, что задаю цвет так:
Код:
imagePixelMode1 = reinterpret_cast<uint *>(curQImageMode1.bits());
imagePixelMode1[i] = qRgb(data[i],data[i],data[i]);
Хотел попробовать формат QGray и сделать так
Код:
uchar imagePixelMode1 = curQImageMode1.bits();
imagePixelMode1[i] = qGray(data[i],data[i],data[i]);

Мне нужно выводить картинку больших размеров в оттенке серого, и хотелось бы меньше затрачивать ресурсов, для рисования и отображения, но при втором варианте все гораздо хуже чем RGB32

Подскажите, в какую сторону смотреть? или я не правильно пользуюсь?

Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #1 : Сентябрь 14, 2016, 11:12 »

Попробуйте QImage::Format_Indexed8 только задайте палитру
Записан
deefox
Гость
« Ответ #2 : Сентябрь 14, 2016, 11:20 »

Попробуйте QImage::Format_Indexed8 только задайте палитру

пробывал, только не пойму разницу.
если
Код:
QImage image(3, 3, QImage::Format_Indexed8);
  QRgb value;

  value = qRgb(122, 163, 39); // 0xff7aa327
image.setColor(0, value);

то код мой не изменяется вообще, кроме того, что я задаю формат индекса8.

Результат - это появление странных линий, а скорость может и изменилась, то не заметно
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #3 : Сентябрь 17, 2016, 09:57 »

Вы палитру не задали. Но вообще, есть же QImage::Format_Grayscale8
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #4 : Сентябрь 17, 2016, 11:54 »

Результат - это появление странных линий, а скорость может и изменилась, то не заметно
Скорость отрисовки не возрастет а скорее даже немного уменьшится, для вывода на экран все равно нужно 32 бита. Но объем данных сократится в 4 раза. И скорость обработки можно заметно увеличить если работать напрямую, см QImage::bits. QImage::scanLine
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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