Как сохранить изображения из QGraphicsView?

Я создаю очень простой редактор изображений на Qt. Пользователь может открыть изображение (изображение отображается на QGraphicsView) и у него есть возможность вращаться либо по часовой стрелке, либо против часовой стрелки. Затем он может сохранить повернутое изображение. Вот в чем моя проблема. QGraphicsView а потом сохранить?

Вот мой код открытия файла изображения. Переменная изображение QPixmap Тип и imageObject является QImage указатель.

Открытие кода изображения

1

Решение

Один из способов сделать это — создать QPixmap а затем использовать QPainter рисовать QGraphicsScene на растровое изображение.

# Get the size of your graphicsview
rect = graphicsview.viewport().rect()

# Create a pixmap the same size as your graphicsview
# You can make this larger or smaller if you want.
pixmap = QPixmap(rect.size())
painter = QPainter(pixmap)

# Render the graphicsview onto the pixmap and save it out.
graphicsview.render(painter, pixmap.rect(), rect)
pixmap.save('/path/to/file.png')
1

Другие решения

Взгляни на Этот метод:

void QGraphicsView::render(QPainter * painter, const QRectF & target = QRectF(), const QRect & source = QRect(), Qt::AspectRatioMode aspectRatioMode = Qt::KeepAspectRatio)

Отрисовывает исходный прямоугольник, который находится в координатах вида, со сцены
в цель, которая находится в координатах устройства рисования, используя маляр. это
функция полезна для захвата содержимого вида на краску
устройство, такое как QImage (например, чтобы сделать снимок экрана)

Что касается вращения, метод, который вам нужен, это void QGraphicsItem::setRotation(qreal angle) или в качестве альтернативы void QGraphicsView::rotate(qreal angle) — в зависимости от того, хотите ли вы повернуть элемент или весь вид.

0

По вопросам рекламы [email protected]