2013-05-11 9 views
5

मैं रसदार पिक्सल लाइब्रेरी का उपयोग करके एक पीएनजी लोड करने की कोशिश कर रहा हूं और मैं इसे सफलतापूर्वक करने में सक्षम हूं लेकिन मैं समझ नहीं पा रहा हूं कि अंतर्निहित छवि किस प्रकार है। लाइब्रेरी में DynamicImage निम्नानुसार परिभाषित किया गया है।कोडक द्वारा लोड किए गए डायनेमिक इमेज को किस प्रकार बताएं चित्रण

data DynamicImage = 
     ImageY8 (Image Pixel8) 
    | ImageYA8 (Image PixelYA8) 
    | ImageRGB8 (Image PixelRGB8) 
    | ImageRGBA8 (Image PixelRGBA8) 
    | ImageYCbCr8 (Image PixelYCbCr8) 

सरल परीक्षण और त्रुटि के माध्यम से मैं यह पता लगाने में सक्षम था कि यह ऐसा करके एक छविआरजीबीए 8 था।

img = (\(ImageRBA8 t) -> t) dynImage 

तो बस

imageData img 

कर GHCi में छवि डेटा मुद्रित करने के लिए, अन्य सभी प्रकार के एक त्रुटि दे। तो मैं कैसे पता लगा सकता हूं कि DynamicImage किस प्रकार के परीक्षण के बिना लोड किया गया है। मुझे यकीन है कि यह काफी सरल है और मुझे बस कुछ याद आ रहा है।

उत्तर

4

DynamicImage केवल एक एडीटी है ताकि आप फ़ंक्शन परिभाषा या केस अभिव्यक्ति में इसके विरुद्ध पैटर्न मिलान कर सकें। उपयोग किए गए सटीक कन्स्ट्रक्टर फ़ाइल से लोड की गई छवि के प्रकार पर निर्भर करेगा (इसलिए इस मामले में यह आरजीए 8 था लेकिन अन्य मामलों में यह अलग हो सकता था)।

उदाहरण के लिए:

case img of 
    ImageY8 imgPixel8 -> ... do something ... 
    ImageYA8 imgPixelYA8 -> ... 
    ImageRGB8 imgPixelRGB8 -> ... 
    ImageRGBA8 imgPixelRGBA8 -> ... 
    ImageYCbCr8 imgPixelYCbCr8 -> ... 
+0

धन्यवाद। मुझे पता था कि यह कुछ मूर्खतापूर्ण था – DiegoNolan

+0

क्या आप सभी प्रकार की छवियों के लिए एक ही चीज़ करना चाहते हैं? – jarmond

+0

@jarmond फिर आगे बढ़ें। मामला क्या है? यदि आप सभी संभावित रचनाकारों पर मैन्युअल ट्रैवर्सल से अधिक आसान करना चाहते हैं तो juicypixels-utils से 'fromDynamicImage' का उपयोग करने पर विचार करें। –

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