2010-07-30 16 views
5

मैं पाइथन में एक साधारण एप्लिकेशन लिख रहा हूं जो छवियों को प्रदर्शित करता है। मुझे छवि स्केल करके ज़ूम इन और ज़ूम आउट को कार्यान्वित करने की आवश्यकता है।
मुझे लगता है कि Image.transform विधि यह करने के लिए सक्षम हो जाएगा, लेकिन मैं इसे कैसे उपयोग करने के लिए यकीन नहीं है, क्योंकि यह एक affine मैट्रिक्स या ऐसा ही कुछ के लिए पूछ रहा है: पी
यहाँ से उद्धरण डॉक्स:पायथन छवि लाइब्रेरी के साथ ज़ूमिंग

im.transform (आकार, affine, डेटा, फिल्टर) => छवि

एक affine छवि को बदलने पर लागू होता है, और दिए गए आकार के साथ एक नई छवि में परिणाम देता है।

डेटा 6-टुपल (ए, बी, सी, डी, ई, एफ) है जिसमें एफ़िन ट्रांसफॉर्म मैट्रिक्स से पहली दो पंक्तियां होती हैं। आउटपुट छवि में प्रत्येक पिक्सेल (एक्स, वाई) के लिए, नया मान इनपुट छवि में एक स्थिति (एक एक्स + बी वाई + सी, डी एक्स + ई वाई + एफ) से लिया जाता है, जो निकटतम पिक्सेल तक गोल होता है।

इस फ़ंक्शन का उपयोग मूल छवि को स्केल करने, अनुवाद करने, घुमाने और कतरने के लिए किया जा सकता है।

उत्तर

5

आप बहुत से बेहतर होगा AFFINE विधि के बजाय EXTENT का उपयोग कर। आपको केवल दो चीजों की गणना करने की आवश्यकता है: इनपुट का कौन सा हिस्सा आप देखना चाहते हैं, और यह कितना बड़ा होना चाहिए। उदाहरण के लिए, यदि आप पूरी छवि को आधा आकार (यानी 2 से ज़ूम आउट करना) तक स्केल करना चाहते हैं, तो आप डेटा (0, 0, im.size [0], im.size [1]) पास करेंगे और आकार (im.size [0]/2, im.size [1]/2)।

+0

जानकारी के लिए धन्यवाद, यह बहुत अच्छा :) –

0

एक एफ़िन रूपांतरण लागू होता है और अनुवाद के बाद रैखिक परिवर्तन होता है। लेकिन आपको केवल आकार बदलने के तरीके से छवि के एक हिस्से का आकार बदलना होगा। अतः निम्नलिखित में कुछ नमूना कोड का जवाब नहीं है:

+0

धन्यवाद काम किया, मैं हद तक एक का उपयोग कर रहा है, लेकिन यह उदाहरण काफी मददगार था:) –

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