2016-02-04 2 views
1

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

Вот мой код открытия файла изображения. Изображение переменной QPixmap и изображениеОбъект является указателем QImage.

Opening Image Code

+1

Вместо того чтобы использовать изображение вашего кода, почему бы не просто разместить код в своем вопросе. –

ответ

0

Взгляните на this method:

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) - в зависимости от того, хотите ли вы повернуть объект или весь вид.

1

Один из способов сделать это - создать QPixmap, а затем использовать QPainter, чтобы нарисовать QGraphicsScene на pixmap.

# 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') 
+0

Большое спасибо, что вы были очень полезны, наконец, это сработало! @BrendanAbel –