2011-08-10 23 views
29

मैं एक QPixmap/QImage में एक पीएनजी छवि लोड करता हूं और मैं इसे फसल करना चाहता हूं। क्या कोई ऐसा कार्य है जो Qt में करता है, या मैं इसे अन्यथा कैसे करना चाहिए?मैं क्यूटी में एक छवि कैसे फसल कर सकता हूं?

उत्तर

30

आप 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); 
3

जब से तुम QPixmap उपयोग करते हैं, आप अपनी copy method का उपयोग करें और एक QRect के साथ की आपूर्ति वास्तविक फसल प्रदर्शन करने के लिए कर सकते हैं।

2

बस QPixmap की प्रति() फ़ंक्शंस का उपयोग करें।

कभी कभी यह एक छवि के आसपास लपेटो करने के लिए बेहतर है:

यह पाठ आपके quiestion पर पहली टिप्पणी पढ़ने का परिणाम है। यह एक ऐसी छवि है जो किसी अन्य छवि का हिस्सा है या दूसरे शब्दों में किसी अन्य छवि के हिस्से को इंगित करती है। इस तरह से लपेटी गई छवि को इसके शीर्षलेख को छोड़कर अतिरिक्त मेमोरी की आवश्यकता नहीं होती है। आप बिना किसी चिंता के लपेटे हुए चित्र को प्रदर्शित या सहेज सकते हैं। नकारात्मकता यह है कि मूल छवि तब तक वैध रहनी चाहिए जब तक कि आप लिपटे छवि का उपयोग न करें, भले ही आप लपेटी हुई छवि में चित्रित कर रहे हों, यह स्रोत को प्रभावित करेगा।

25

QPixmap के बजाय QImage उपयोग:

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

इस कोड को एक फ़ाइल की बचत होगी ऊपरी बाएँ कोने 128x128px के लिए क्रॉप।

+0

आप एक ही ऑपरेशन करने के लिए 'QPixmap' का उपयोग कर सकते हैं; इसके अतिरिक्त, 'QPixmap' में 'toImage()' है यदि आप' QPixmap' से शुरू कर रहे हैं और इसे 'QImage' के रूप में चाहते हैं। आप इसे एक पंक्ति में कर सकते हैं: 'QImage copy = pixmap.copy (0,0,128,128) .toImage();' –

संबंधित मुद्दे