Скриншот Pixmap преобразовать в низкокачественный

я использую qt Creator для создания образца удаленного помощника, мой проект состоит из двух частей: сервера и клиента, клиент делает снимок экрана и отправляет его на сервер, но снимки экрана должны иметь высокое качество и занимать слишком много места, и это не очень хорошая идея, чтобы отправить его из локальная сеть или интернет-протокол, мне нужно изменить размер изображения или преобразовать его в низкое качество, чтобы оно было почти узнаваемым

это мои коды скриншотов

 void MainWindow::shootScreen()
 {
 originalPixmap = QPixmap(); // clear image for low memory situations
                             // on embedded devices.
 originalPixmap = QGuiApplication::primaryScreen()->grabWindow(0);

 //emit getScreen(originalPixmap);

 updateScreenshotLabel();


 }

 void MainWindow::updateScreenshotLabel()
 {
 this->ui->label_2->setPixmap(originalPixmap.scaled(this->ui->label_2-    >size(),
                                                  Qt::KeepAspectRatio,
                                                  Qt::SmoothTransformation));
 }

person amir    schedule 10.07.2016    source источник


Ответы (1)


Похоже, вы знаете, как изменить размер изображения, почему этого недостаточно?

Просто сделать:

QPixmap smallPixmap = originalPixmap.scaled( QSize( originalPixmap.size().x()/4, originalPixmap.size().y()/4 ), Qt::KeepAspectRatio,                                                   Qt::SmoothTransformation );

И отправьте smallPixmap вместо originalPixmap.

Вы также можете (должны) сжать изображение с помощью QImageWriter, это позволит вам создать изображение, сжатое в формате jpeg, что также должно уменьшить использование памяти.

Проверьте это, похоже, они делают то, что вы пытаются сделать.

person jpo38    schedule 10.07.2016
comment
спасибо, но не могли бы вы сказать мне, как я могу сжать originalPixmap с помощью QImageWrite? - person amir; 10.07.2016
comment
Проверьте предоставленные ссылки. Сначала преобразуйте его в QImage (QPixmap::toImage()), затем используйте QImageWriter, как предлагается здесь: stackoverflow.com/a/5443085/3336423 - person jpo38; 11.07.2016