दिलचस्प पोस्ट
एक वेबफॉर्म से एक MVC HtmlHelper का उपयोग करना बैच फ़ाइल को एक फ़ोल्डर से दूसरे फ़ोल्डर में फाइल कॉपी करने के लिए Django – एक अनुसूचित नौकरी सेट करें? सीओएटी के लिए सही जवाब क्या है << a ++ << a ;? मैं webpack.config.js में ईएस 6 का उपयोग कैसे कर सकता हूं? कंक्रीट का उदाहरण दिखा रहा है कि संरचना के तहत मोनाद बंद नहीं किए गए हैं (सबूत के साथ)? एसएसई scalar sqrt (x) rsqrt (x) * x से धीमी क्यों है? getopt पैरामीटर के लिए वैकल्पिक तर्क को पार्स नहीं करता है मैं अपने कस्टम ऑब्जेक्ट्स पार्सलेट योग्य कैसे बना सकता हूं? IOS 6.0 के तहत UIImagePickerController पेश करने पर क्रैश .htaccess में upload_max_filesize कैसे सेट करें? बैकटीक (`) के उपयोग के बारे में एसक्यूएल मानक क्या कहते हैं? मैं 30 दिन के लिए एक परीक्षण संस्करण के रूप में अपना उत्पाद कैसे बना सकता हूं? NullPointerException: println को Android में एक संदेश की आवश्यकता है ASP.NET MVC नियंत्रक कार्य जो JSON या आंशिक HTML वापस आते हैं

क्या बिटमैपसोर्स और बिटमैप के बीच कन्वर्ट करने का एक अच्छा तरीका है?

जहां तक ​​मैं बिटमैपसोर्स से बिटमैप को बदलने का एकमात्र तरीका बता सकता हूं असुरक्षित कोड के माध्यम से … इस तरह से ( लेस्टर WPF ब्लॉग से ):

myBitmapSource.CopyPixels(bits, stride, 0); unsafe { fixed (byte* pBits = bits) { IntPtr ptr = new IntPtr(pBits); System.Drawing.Bitmap bitmap = new System.Drawing.Bitmap( width, height, stride, System.Drawing.Imaging.PixelFormat.Format32bppPArgb,ptr); return bitmap; } } 

रिवर्स करने के लिए:

 System.Windows.Media.Imaging.BitmapSource bitmapSource = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap( bitmap.GetHbitmap(), IntPtr.Zero, Int32Rect.Empty, System.Windows.Media.Imaging.BitmapSizeOptions.FromEmptyOptions()); 

क्या ढांचे में कोई आसान तरीका है? और इसका कारण यह है कि इसमें नहीं है (यदि ऐसा नहीं है)? मुझे लगता है कि यह काफी उपयोगी है।

इसकी वजह मुझे इसकी ज़रूरत है क्योंकि मैं एफ़ओएफ़ का प्रयोग एक WPF एप में कुछ छवि कार्यों को करने के लिए करता हूं। डब्ल्यूपीएफ बिटमैपसोर्स / इमेजसोर्स दिखाना चाहता है लेकिन एटॉफ़ बिटमैप पर काम करता है।

Solutions Collecting From Web of "क्या बिटमैपसोर्स और बिटमैप के बीच कन्वर्ट करने का एक अच्छा तरीका है?"

BitmapBitmapSource का उपयोग करके असुरक्षित कोड का उपयोग किए बिना करना संभव है और Bitmap.LockBits से पिक्सल को सीधे Bitmap कॉपी करें

 Bitmap GetBitmap(BitmapSource source) { Bitmap bmp = new Bitmap( source.PixelWidth, source.PixelHeight, PixelFormat.Format32bppPArgb); BitmapData data = bmp.LockBits( new Rectangle(Point.Empty, bmp.Size), ImageLockMode.WriteOnly, PixelFormat.Format32bppPArgb); source.CopyPixels( Int32Rect.Empty, data.Scan0, data.Height * data.Stride, data.Stride); bmp.UnlockBits(data); return bmp; } 

आप इन दो विधियों का उपयोग कर सकते हैं:

 public static BitmapSource ConvertBitmap(Bitmap source) { return System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap( source.GetHbitmap(), IntPtr.Zero, Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions()); } public static Bitmap BitmapFromSource(BitmapSource bitmapsource) { Bitmap bitmap; using (var outStream = new MemoryStream()) { BitmapEncoder enc = new BmpBitmapEncoder(); enc.Frames.Add(BitmapFrame.Create(bitmapsource)); enc.Save(outStream); bitmap = new Bitmap(outStream); } return bitmap; } 

यह मेरे लिए पूरी तरह से काम करता है

क्या यह आपकी तलाश है?

 Bitmap bmp = System.Drawing.Image.FromHbitmap(pBits); 

संसाधन कोड के भीतर किसी भी बिटमैप संसाधन के लिए पारदर्शी पृष्ठभूमि सेट करने के लिए यहां एक कोड (संसाधन.रेक्स नहीं अक्सर Windows.Forms में उपयोग किया जाता है)। मैं इस मेथोड को कॉल करने से पहले InitializeComponent () – मेथोड मेथोड्स 'कन्वर्टबिटमैप (बिटमैप स्रोत)' और बिटमैपफ्रॉम्स्सोर्स (बिटमैपसोर्स बिटमैपसोर्स) का उपरोक्त मेल्वस से पोस्ट में उल्लेख किया गया है।

 private void SetBitmapResourcesTransparent() { Image img; BitmapSource bmpSource; System.Drawing.Bitmap bmp; foreach (ResourceDictionary resdict in Application.Current.Resources.MergedDictionaries) { foreach (DictionaryEntry dictEntry in resdict) { // search for bitmap resource if ((img = dictEntry.Value as Image) is Image && (bmpSource = img.Source as BitmapSource) is BitmapSource && (bmp = BitmapFromSource(bmpSource)) != null) { // make bitmap transparent and assign it back to ressource bmp.MakeTransparent(System.Drawing.Color.Magenta); bmpSource = ConvertBitmap(bmp); img.Source = bmpSource; } } } } 

यह प्रकाश से तेज और तेज है:

  return Imaging.CreateBitmapSourceFromHBitmap( bitmap.GetHbitmap(), IntPtr.Zero, Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions() ); 

आप दोनों नामस्थानों के बीच पिक्सेलडाटा साझा कर सकते हैं। आपको कन्वर्ट करने की ज़रूरत नहीं है

SharedBitmapSource का उपयोग करें https://stackoverflow.com/a/32841840/690656