Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: zaz80 от Март 21, 2007, 20:48



Название: Qt 4.2.2 Как сохранить QGraphicsScene в файл (bmp, png, ..)?
Отправлено: zaz80 от Март 21, 2007, 20:48
Кто-нибудь пробовал сохранять построенную сцену (QGraphicsScene) со  всеми элементами как изображение, т.е. в файл bmp, png, jpg, ...

Можно сохранить QGraphicsView, как QWidget:

   QGraphicsView *myGrView;
   QPixmap pixmap = QPixmap::grabWidget(myGrView);
   pixmap.save("d:\\test.bmp");

Но в этом случае, сохраняется (естественно) только видимая часть сцены, т.е. если сцена не помещается на экране, то и "картинка" будет неполной.

HELP!!!


Название: Qt 4.2.2 Как сохранить QGraphicsScene в файл (bmp, png, ..)?
Отправлено: troorl от Март 21, 2007, 21:37
Я вот так сохраняю.
Код:
QImage image(scene->width(), scene->height(), QImage::Format_ARGB32_Premultiplied);
QPainter painter(&image);
scene->render(&painter);
image.save("/somepath/result.png");


Только у меня возникла проблема с прозрачностью. Если поставить заливку фона сцены прозрачным цветом, то сохраняется эта картинка с какими-то артефактами. Например, полизображения может быть изуродовано полосками, а другая половина с нормальной прозрачностью.
Если кто знает причину - отзовитесь.


Название: Qt 4.2.2 Как сохранить QGraphicsScene в файл (bmp, png, ..)?
Отправлено: zaz80 от Март 21, 2007, 21:59
спасибо!


Название: Qt 4.2.2 Как сохранить QGraphicsScene в файл (bmp, png, ..)?
Отправлено: _govorilka от Март 26, 2007, 06:49
Цитата: "troorl"
Я вот так сохраняю.
Код:
QImage image(scene->width(), scene->height(), QImage::Format_ARGB32_Premultiplied);
QPainter painter(&image);
scene->render(&painter);
image.save("/somepath/result.png");


Только у меня возникла проблема с прозрачностью. Если поставить заливку фона сцены прозрачным цветом, то сохраняется эта картинка с какими-то артефактами. Например, полизображения может быть изуродовано полосками, а другая половина с нормальной прозрачностью.
Если кто знает причину - отзовитесь.


QImage - это массив, и как любой другой массив его надо инициализировать (заполнять нулями).


Название: Qt 4.2.2 Как сохранить QGraphicsScene в файл (bmp, png, ..)?
Отправлено: troorl от Март 26, 2007, 20:39
Цитата: "_govorilka"

QImage - это массив, и как любой другой массив его надо инициализировать (заполнять нулями).

Да, я уже догадался.
Код:
image.fill(NULL);

выручает :)


Название: Re: Qt 4.2.2 Как сохранить QGraphicsScene в файл (bmp, png, ..)?
Отправлено: mal от Апрель 07, 2008, 19:19
А если я повернул сцену с ее примитивами на какой либо угол. и хочу сохранить ее в таком виде - как быть?
Скажем добавление в приведенном коде после scene->render(...)
painter.rotate(...) не помогает.
Есть идеи?


Название: Re: Qt 4.2.2 Как сохранить QGraphicsScene в файл (bmp, png, ..)?
Отправлено: StatuS74 от Август 11, 2011, 10:15
так как сделать что бы картина полной сохранялось а не урезаной ?



Название: Re: Qt 4.2.2 Как сохранить QGraphicsScene в файл (bmp, png, ..)?
Отправлено: StatuS74 от Октябрь 26, 2011, 08:14
я сохраняю вот так.
Код:
 QString puti_save;
    QImage image(scene->width(), scene->height(), QImage::Format_ARGB32_Premultiplied);
    image.fill(QColor(Qt::white).rgb());
    QPainter painter(&image);
    scene->render(&painter);
    painter.end();
    puti_save = ser_mumb;
    puti_save.append("_тест №1_").append(".PNG");
    image.save(puti_save);
не могу понять как мне указать путь куда сохранять и имя что бы было


Название: Re: Qt 4.2.2 Как сохранить QGraphicsScene в файл (bmp, png, ..)?
Отправлено: kambala от Октябрь 26, 2011, 09:02
Код
C++ (Qt)
image.save(QString("/some/path/%1_тест №1_.PNG").arg(ser_mumb));


Название: Re: Qt 4.2.2 Как сохранить QGraphicsScene в файл (bmp, png, ..)?
Отправлено: StatuS74 от Октябрь 26, 2011, 10:08
попробовал не сохраняет.
сделал вот так
Код:
QString puti_save;
    QImage image(scene->width(), scene->height(), QImage::Format_ARGB32_Premultiplied);
    image.fill(QColor(Qt::white).rgb());
    QPainter painter(&image);
    scene->render(&painter);
    painter.end();
    puti_save = "/Графики_тестов/";
    puti_save = puti_save.append(ser_mumb);
    puti_save.append("_тест №1_").append(".PNG");
    image.save(puti_save);
тоже не сохраняет


Название: Re: Qt 4.2.2 Как сохранить QGraphicsScene в файл (bmp, png, ..)?
Отправлено: ninjaproger от Октябрь 26, 2011, 10:18
 Попробуй через QPixmap;


QPixmap pixmap;
QPainter pixPainter(&pixmap);
YourEditorScene->render(&pixPainter,sceneRect,sceneRect);
pixmap.save(filename, "PNG"); // writes pixmap into bytes in PNG format


Название: Re: Qt 4.2.2 Как сохранить QGraphicsScene в файл (bmp, png, ..)?
Отправлено: StatuS74 от Октябрь 26, 2011, 10:24
надо через QImage. если сохранять просто без пути то все работает. а если путь писать то не пишит


Название: Re: Qt 4.2.2 Как сохранить QGraphicsScene в файл (bmp, png, ..)?
Отправлено: ninjaproger от Октябрь 26, 2011, 10:51
У меня с путями в таком варианте работает

QString format = "png";
QString initialPath = QDir::currentPath() + tr("/untitled.") + format;
QString fileName = QFileDialog::getSaveFileName(this, tr("Save As"),
                               initialPath,
                               tr("%1 Files (*.%2);;All Files (*)")
                               .arg(format.toUpper())
                               .arg(format));
if (!fileName.isEmpty())
        getPixmap().save(fileName, format.toAscii());

попробуй пути получать через QDir


Название: Re: Qt 4.2.2 Как сохранить QGraphicsScene в файл (bmp, png, ..)?
Отправлено: StatuS74 от Октябрь 26, 2011, 11:14
все заработало =) сделал через директории