Qt: самое быстрое слияние и отображение изображений - PullRequest
4 голосов
/ 23 марта 2012


Я ищу самый быстрый способ:

  1. слияние (это означает создание одного изображения из пары изображений, наложение одного на другое относительно их альфа-значений)
  2. отображение изображений

в Qt. Это мое решение:

// --------------------------------------------- ---------------------------------------

 QImage image1 (width, height, QImage::Format_ARGB32);
 QImage image2 (width, height, QImage::Format_ARGB32);
 QImage image3 (width, height, QImage::Format_ARGB32);

/ * некоторые операции с изображениями * /

 QPainter displayPainter (this);
 displayPainter.drawImage (topLeft, image1, area);
 displayPainter.drawImage (topLeft, image2, area);
 displayPainter.drawImage (topLeft, image3, area);

// --------------------------------------------- ---------------------------------------

Если существует что-то лучше, быстрее? Я нашел информацию, что QPixmap лучше отображать на экране, но это: displayPainter.drawPixmap (.) медленнее, чем это: displayPainter.drawImage (.).

------------------------------------------ РЕДАКТИРОВАТЬ ---- --------------------------------------

Хочу добавить, что видел этот вопрос: Какой самый эффективный способ отображения декодированных видеокадров в Qt?

но в моем случае использование QGLWidget немного сложнее. Я использую необходимые и это не стабильно с paintEvent в QGLWidget. С paintGL проблем нет. С уважением,

Ответы [ 2 ]

5 голосов
/ 27 марта 2012

Я нашел решение, чтобы сделать мой код более оптимальным. В моем случае я имею дело с альфа-смешением нескольких изображений. я нашел в документации , что:

"Некоторые операции (например, компоновка изображения с использованием альфа-смешивания) быстрее используют предварительно умноженный ARGB32, чем обычный ARGB32. "

Использование:

QImage image (width, height, QImage::Format_ARGB32_Premultiplied);

вместо:

QImage image (width, height, QImage::Format_ARGB32);

улучшено альфа-смешение, что делает его в 2 раза быстрее! У вас есть другие идеи, как сделать это лучше?

0 голосов
/ 24 марта 2012

Вы можете рассмотреть код " Image Composition Example ", доступный в примерах Qt.Кажется, это то, что вы ищете?

...