2023-09-08 09:20:41來源:WPF踐行者
在C#中,可以使用System.Drawing.Bitmap類實現圖片轉內存緩存,以方便在不同進程之間的共享。以下是一個示例代碼,演示如何將圖片轉換為內存緩存數據。
1. 圖片轉換首先,我們需要將圖片加載到一個Bitmap對象中。可以使用以下代碼:
(資料圖片僅供參考)
```csharpusing System.Drawing;Bitmap bitmap = new Bitmap("image.jpg");```
2. 內存緩存轉換
接下來,我們可以將Bitmap對象轉換為內存緩存數據。可以使用以下代碼:
```csharpusing System.IO;using System.Runtime.Serialization.Formatters.Binary;MemoryStream stream = new MemoryStream();BinaryFormatter formatter = new BinaryFormatter();formatter.Serialize(stream, bitmap);byte[] buffer = stream.ToArray();```
在以上代碼中,我們使用MemoryStream創建一個流,并使用BinaryFormatter將Bitmap對象寫入流中,并使用ToArray函數將流轉換為字節數組,以便進行進程間共享。
3. 共享內存緩存接下來,我們可以在另一個進程中使用共享內存緩存數據。可以使用以下代碼:
```csharpusing System.IO;using System.Runtime.Serialization.Formatters.Binary;byte[] buffer = /* 從另一個進程獲取共享的內存緩存數據 */;MemoryStream stream = new MemoryStream(buffer);BinaryFormatter formatter = new BinaryFormatter();Bitmap bitmap = (Bitmap)formatter.Deserialize(stream);```
在以上代碼中,我們從另一個進程中獲取共享的內存緩存數據,并使用MemoryStream創建一個流。接著,我們使用BinaryFormatter從字節數組讀取Bitmap對象。注意,需要將返回值轉換為Bitmap對象。
完整示例代碼:
```csharpusing System.Drawing;using System.IO;using System.Runtime.Serialization.Formatters.Binary;// 圖片轉換為內存緩存public static byte[] ConvertToMemory(Bitmap bitmap){ MemoryStream stream = new MemoryStream(); BinaryFormatter formatter = new BinaryFormatter(); formatter.Serialize(stream, bitmap); byte[] buffer = stream.ToArray(); return buffer;}// 共享內存緩存轉換為圖片public static Bitmap ConvertToImage(byte[] buffer){ MemoryStream stream = new MemoryStream(buffer); BinaryFormatter formatter = new BinaryFormatter(); Bitmap bitmap = (Bitmap)formatter.Deserialize(stream); return bitmap;}```
在以上示例代碼中,我們定義了ConvertToMemory函數,它接受一個Bitmap對象,并將其轉換為內存緩存數據。我們還定義了ConvertToImage函數,它接受一個字節數組,并將其轉換為Bitmap對象。
注意,這種方法只適用于小型圖像。更大的圖像需要使用其他的方法進行共享。
本文轉載自微信公眾號「WPF踐行者」,可以通過以下二維碼關注。轉載本文請聯系公眾號。
關鍵詞:
在C 中,可以使用System Drawing Bitmap類實現圖片轉內存緩存,以方便
無疑,元宇宙是當下炙手可熱的風口行業。無論是傳統玩家,抑或是互聯網
API(應用程序接口)是一種允許不同應用程序之間交換數據和功能的軟件接
在C++中,純虛函數和抽象類是面向對象編程中重要的概念。本文將會深入
好消息,開發者心心念念的GPT-5終于要來了?今日,OpenAI官宣其首屆開
數據中心是現代生活的基本組成部分。在這個萬物互聯的時代,其是我們經
MQTT和CoAP都是物聯網(IoT)使用的輕量級協議。它們在許多方面相似,但
生成式AI越來越流行,尤其是在商業領域。不久前,沃爾瑪宣布推出生成式
我是從Oracle5開始使用Oracle的,不過Oracle5、6的時代,我只是幫用戶
自去年ChatGPT發布后,業內外都涌現出了一股對大型語言模型的狂熱情緒
把Span歸于語法糖,可能有些偏了,但偏了就偏了,哈哈,只要是分享就好
MongoDB是一種可伸縮的數據庫,支持數據分片和負載均衡,以實現高性能
世界最強AI——ChatGPT可以通過各種考試,甚至輸出回答讓人難以辨別真
開學季|“芝士”就是力量,5分鐘上學不遲到的早餐,真的漲知識了
轉眼間,九月來了瓜果漸熟,稻谷飄香,蟹肥菊黃……新的一個月,繼續努