Реклама

Qt/C++ - Урок 032. Сохранение изображения в файл из QCustomPlot

bmp, jpg, pdf, png, QCustomPlot, Qt, сохранение, файл

В предыдущей статье по работе с QCustomPlot был дан пример использования данной библиотеки. Но после того, как график построен, может возникнуть необходимость произвести его сохранение в графический файл. Библиотека QCustomPlot уже предоставляет необходимые для этого методы. Всё, что нужно сделать - это создать файл, в который будет произведено сохранение и передать путь к файлу в один из методов для сохранения изображения.

Методы для сохранения изображения

saveRastered(const QString &fileName, int width, int height, double scale, const char *format, int quality)
saveJpg(const QString &fileName, int width, int height, double scale, int quality);
savePng(const QString &fileName, int width, int height, double scale, int quality);
saveBmp(const QString &fileName, int width, int height, double scale);
savePdf(const QString &fileName, bool noCosmeticPen, int width, int height, const QString &pdfCreator, const QString &pdfTitle);

saveRastered

Является основополагающим методом для методов: saveJpg, savePng, saveBmp. То есть он вызывается во всех этих методах. Внутри метода saveRastered создаётся экземпляр QPixmap, посредством которого сохраняется изображение из виджета QCustomPlot. Для данного метода можно указать тип сохраняемого файла. Тогда как остальные три метода просто упрощают работу и написание кода, отменяя необходимость указания типа файла.

savePdf

Данный метод стоит особняком и не использует QPixmap , а работает через QPrinter . Хотя логика использования в минимальном варианте аналогична остальным методам.

Сохранение изображения

Расширим программный код из предыдущего урока добавлением кнопки Save , в слоте которой будет происходить сохранение изображения в файл по следующему пути C:/example/customPlot.png.

Помимо пути к файлу имеется возможность указать качество изображения, его масштаб, и параметры сторон.

// Слот кнопки Save, для сохранения изображения в файл
void MainWindow::on_pushButton_clicked()
{
    QString fileName("C:/example/customPlot.png");
    QFile file(fileName);

    if (!file.open(QIODevice::WriteOnly))
    {
        qDebug() << file.errorString();
    } else {
        wGraphic->savePng(fileName);
    }
}

Реклама

Комментарии

Комментарии

Только авторизованные пользователи могут оставлять комментарии.
Пожалуйста, Авторизуйтесь или Зарегистрируйтесь
  • BlinCT
  • 22 октября 2017 г. 12:46

C++ - Тест 003. Условия и циклы

  • Результат 64 баллов
  • Очки рейтинга -1
  • Kiops
  • 22 октября 2017 г. 3:56

C++ - Тест 001. Первая программа и типы данных

  • Результат 86 баллов
  • Очки рейтинга 6
  • Kiops
  • 22 октября 2017 г. 2:41

Qt - Тест 001. Сигналы и слоты

  • Результат 100 баллов
  • Очки рейтинга 10
Последние комментарии
  • EVILEG
  • 21 октября 2017 г. 3:06

Qt/C++ - Урок 031. QCustomPlot - строим график по времени

Добавил архив с проектом

  • EVILEG
  • 20 октября 2017 г. 20:06

Qt/C++ - Урок 031. QCustomPlot - строим график по времени

После работы поищу, должен где-то быть на винте.

  • Миша
  • 20 октября 2017 г. 20:04

Qt/C++ - Урок 031. QCustomPlot - строим график по времени

не могли бы вы выложить архив с рабочей версией скрипта?

  • EVILEG
  • 20 октября 2017 г. 20:03

Qt/C++ - Урок 030. QCustomPlot - быстрый старт в работе с графиками

Использование дизайнера в Qt Creator и использование ui файлов является распространённой практикой в Qt фреймворке. Написать отдельную статью про то, что это такое? - может быть. Опи...

  • Миша
  • 20 октября 2017 г. 19:43

Qt/C++ - Урок 030. QCustomPlot - быстрый старт в работе с графиками

Но почему вы это не описали? Не могли бы вы описать.

Сейчас обсуждают на форуме
  • EVILEG
  • 22 октября 2017 г. 12:05

Закрепление якорей в момент создания объекта через JS

Добрый день! Якоря - это не те свойства, которые можно устанавливать сразу по инициализации, лучше их править после создания объекта, поскольку при одновременной установке они могут в...

  • EVILEG
  • 21 октября 2017 г. 23:33

Создание истории редактирования постов на сайте

Ясно. Тогда я лучше не буду тратить время на его проверку. Тем более, что я использую гугловский prettyprint для подсветки кода. Спасибо за информацию.

QFile::copy() возвращает false

Получилось! Спасибо огромное! path1 = "C:/Users/555/Pictures/00GAF13AP001-002.jpg"true

  • cordsac
  • 19 октября 2017 г. 15:49

How can I select the QGraphicView Item and change the properties

Ok I'll check it sir,If you can please do article(tutorial) about this,Its really useful.Thank you if you can give me some sample code when you free.thanks again

  • cordsac
  • 17 октября 2017 г. 19:28

How can I open SVG file through QT

Okay,Thank you sir :)