2011-08-10 8 views

Odpowiedz

30

Można użyć QPixmap::copy:

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

Istnieje również QImage::copy:

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

Ponieważ używasz QPixmap, można użyć jej copy method i dostarczyć go z QRect wykonać rzeczywisty plon.

2

Wystarczy użyć funkcji copy() programu QPixmap.

Ten tekst jest wynikiem czytania pierwszy komentarz na quiestion:

Czasami lepiej jest owinąć wokół obrazu. Oznacza to, że obraz, który jest częścią innego obrazu lub innymi słowami, wskazuje część innego obrazu. W ten sposób zawijany obraz nie wymaga dodatkowej pamięci, z wyjątkiem nagłówka. Możesz wyświetlić lub zapisać owinięty obraz bez obaw. Minusem jest to, że oryginalny obraz musi pozostać ważny do momentu użycia owiniętego obrazu, także jeśli rysujesz zawinięty obraz, wpłynie to na źródło.

25

Zastosowanie QImage zamiast QPixmap:

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

Kod ten będzie zapisać plik przycięte do lewego górnego rogu 128x128px.

+0

Możesz użyć 'QPixmap' do wykonania tej samej operacji; dodatkowo, 'QPixmap' ma' toImage() 'jeśli zaczynasz od' QPixmap' i chcesz go jako 'QImage'. Możesz to zrobić w jednym wierszu jako takim: 'QImage copy = pixmap.copy (0,0,128,128) .toImage();' –

Powiązane problemy