Russian Qt Forum

Qt => Вопросы новичков => Тема начата: deefox от Сентябрь 14, 2016, 09:43



Название: Формат QImage
Отправлено: 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

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



Название: Re: Формат QImage
Отправлено: Igors от Сентябрь 14, 2016, 11:12
Попробуйте QImage::Format_Indexed8 только задайте палитру


Название: Re: Формат QImage
Отправлено: deefox от Сентябрь 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.

Результат - это появление странных линий, а скорость может и изменилась, то не заметно


Название: Re: Формат QImage
Отправлено: Авварон от Сентябрь 17, 2016, 09:57
Вы палитру не задали. Но вообще, есть же QImage::Format_Grayscale8


Название: Re: Формат QImage
Отправлено: Igors от Сентябрь 17, 2016, 11:54
Результат - это появление странных линий, а скорость может и изменилась, то не заметно
Скорость отрисовки не возрастет а скорее даже немного уменьшится, для вывода на экран все равно нужно 32 бита. Но объем данных сократится в 4 раза. И скорость обработки можно заметно увеличить если работать напрямую, см QImage::bits. QImage::scanLine