2010-10-07 16 views
12

मैं एक WPF BitmapSource ऑब्जेक्ट से पिक्सेल डेटा प्राप्त करने का प्रयास कर रहा हूं। जैसा कि मैं समझता हूं, इसे CopyPixels विधि पर कॉल करके पूरा किया जा सकता है। इस विधि को एक स्ट्रैड पैरामीटर की आवश्यकता है, जिसे मैं नहीं जानता कि कैसे प्राप्त किया जाए। जहां तक ​​मुझे पता है, स्ट्रैड वैल्यू है जिसका उपयोग रीडिंग या कॉपी करने के दौरान सरणी में कदम उठाने पर किया जाता है। किसी भी बिटमैप स्रोत के लिए उपयुक्त कदम मूल्य क्या होगा?बिटमैपसोर्स.कॉपी पिक्सेल- क्या स्ट्राइड के लिए एक अच्छा मूल्य है?

उत्तर

20

आप stride = pixel_size * image_width मान का उपयोग कर सकते हैं। उदाहरण के लिए, 100 पिक्सेल चौड़ाई के साथ आरजीबीए बिटमैप के लिए, स्ट्रैड = 400.

कुछ अनुप्रयोगों को विशेष लाइन संरेखण की आवश्यकता हो सकती है। उदाहरण के लिए, विंडोज जीडीआई बिटमैप्स को 32-बिट्स लाइन संरेखण की आवश्यकता होती है। इस मामले में, चौड़ाई = 33 के साथ आरजीबी बिटमैप के लिए, गंतव्य सरणी में 32-बिट्स लाइन संरेखण के लिए, मूल्य मान 33 * 3 = 99 को 100 में बदला जाना चाहिए।

आम तौर पर, आपको गंतव्य सरणी आवश्यकताओं को जानना चाहिए। इसमें कोई विशेष आवश्यकता नहीं है, डिफ़ॉल्ट pixel_size * image_width का उपयोग करें।

+1

तो मुझे लगता है कि यह तब पिक्सेल आकार बाइट्स में है? –

+6

हां, यह बाइट्स में पिक्सेल आकार है। BitmapSource.Format संपत्ति PixelFormat संरचना देता है। उदाहरण के लिए, Bgr32 के लिए पिक्सेल आकार 4 है, ग्रे 8 - 1 के लिए, Bgr24 - 3 के लिए। बिटमैप डेटा को सरणी में कॉपी करना, आपको वास्तव में परिणामी सरणी संरचना को जानना होगा, और इसे प्रारूप संपत्ति द्वारा परिभाषित किया गया है। –

+0

बहुत बहुत धन्यवाद। –

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

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