Как я могу обрезать изображение в Qt? - PullRequest
34 голосов
/ 10 августа 2011

Я загружаю изображение PNG в QPixmap / QImage и хочу обрезать его.Есть ли функция, которая делает это в Qt, или как мне сделать это иначе?

Ответы [ 4 ]

39 голосов
/ 10 августа 2011

Вы можете использовать QPixmap :: copy :

QRect rect(10, 20, 30, 40);
QPixmap original('image.png');
QPixmap cropped = original.copy(rect);

Также имеется QImage :: copy :

QRect rect(10, 20, 30, 40);
QImage original('image.png');
QImage cropped = original.copy(rect);
26 голосов
/ 15 февраля 2012

Используйте QImage вместо QPixmap:

    QImage image("initial_image.jpg");
    QImage copy ;
    copy = image.copy( 0, 0, 128, 128); 
    copy.save("cropped_image.jpg");

Этот код сохранит файл, обрезанный в верхнем левом углу 128x128px.

4 голосов
/ 10 августа 2011

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

2 голосов
/ 10 августа 2011

Просто используйте функции copy () QPixmap.

Этот текст является результатом чтения первого комментария к вашему запросу:

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

...