2009-07-14 11 views
19

मेरे पास एक तृतीय पक्ष घटक है जिसके लिए मुझे बिटमैप से बिट्सपरपिक्सल देना होगा।बिटमपरपिक्सल को बिटमैप से कैसे प्राप्त करें

"प्रति पिक्सेल बिट्स" प्राप्त करने का सबसे अच्छा तरीका क्या है?

मेरे प्रारंभिक बिंदु निम्नलिखित खाली विधि है: -

public int GetBitsPerPixelMethod(system.drawing.bitmap bitmap) 
{ 
    //return BitsPerPixel; 
} 

उत्तर

1

Pixelformat property का प्रयोग करें, यह एक Pixelformat enumeration रिटर्न उदा की तरह मान हो सकते हैं जो Format24bppRgb, जो स्पष्ट रूप से प्रति पिक्सल 24 बिट है, तो आप इस तरह कुछ करने के लिए सक्षम होना चाहिए:

switch(Pixelformat)  
    { 
    ... 
    case Format8bppIndexed: 
     BitsPerPixel = 8; 
     break; 
    case Format24bppRgb: 
     BitsPerPixel = 24; 
     break; 
    case Format32bppArgb: 
    case Format32bppPArgb: 
    ... 
     BitsPerPixel = 32; 
     break; 
    default: 
     BitsPerPixel = 0; 
     break;  
} 
0

Bitmap.PixelFormat संपत्ति आप बिटमैप है कि पिक्सेल प्रारूप के प्रकार बता देंगे, और उस से आप अनुमान लगा सकते हैं प्रति पिक्सेल बिट्स की संख्या। मुझे यकीन है कि वहाँ इस हो रही का एक बेहतर तरीका है नहीं कर रहा हूँ, लेकिन अनुभवहीन तरह से कम से कम कुछ इस तरह होगा:

var bitsPerPixel = new Dictionary<PixelFormat,int>() { 
    { PixelFormat.Format1bppIndexed, 1 }, 
    { PixelFormat.Format4bppIndexed, 4 }, 
    { PixelFormat.Format8bppIndexed, 8 }, 
    { PixelFormat.Format16bppRgb565, 16 } 
    /* etc. */ 
}; 

return bitsPerPixel[bitmap.PixelFormat]; 
1

Image.GetPixelFormatSize() के बारे में क्या?

73

बल्कि अपने खुद के समारोह बनाने की तुलना में, मैं ढांचे में इस मौजूदा समारोह उपयोग करने का सुझाव चाहते हैं:

Image.GetPixelFormatSize(bitmap.PixelFormat) 
+6

यह इस प्रश्न के लिए स्वीकार्य उत्तर होना चाहिए –

+1

यह और केवल यह जवाब होना चाहिए। इसे साझा करने के लिए धन्यवाद। – datoml

7
var source = new BitmapImage(new System.Uri(pathToImageFile)); 
int bitsPerPixel = source.Format.BitsPerPixel; 

कोड ऊपर की आवश्यकता है कम से कम नेट 3,0

http://msdn.microsoft.com/en-us/library/system.windows.media.imaging.bitmapimage.aspx

+1

एसओ में आपका स्वागत है। अच्छा जवाब: परीक्षण करने योग्य कोड-उत्तर, कार्य करने के लिए अनुमान (.NET-संस्करण) कहा गया है, और दस्तावेज़ों से लिंक करें। यद्यपि आप शायद अपने उत्तर में एक नया ('स्रोत') बनाने के बजाय प्रश्न में आपूर्ति किए गए मौजूदा 'बिटमैप' चर/फ़ंक्शन-तर्क का उपयोग कर सकते हैं। – poplitea

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