2009-11-03 58 views
49

Tôi có một System.Drawing.Image trong chương trình của mình. Tệp không nằm trong hệ thống tệp đang được lưu trữ trong bộ nhớ. Tôi cần tạo một luồng từ đó. Tôi sẽ đi đâu để tới đó?System.Drawing.Image to stream C#

Trả lời

102

Hãy thử như sau:

public static Stream ToStream(this Image image, ImageFormat format) { 
    var stream = new System.IO.MemoryStream(); 
    image.Save(stream, format); 
    stream.Position = 0; 
    return stream; 
} 

Sau đó, bạn có thể sử dụng như sau:

var stream = myImage.ToStream(ImageFormat.Gif); 

Thay GIF với bất cứ định dạng phù hợp với kịch bản của bạn .

+0

Tôi vừa mới viết chính xác điều đó! – configurator

+0

System.Drawing.Image.Save yêu cầu định dạng khi lưu vào luồng. http://msdn.microsoft.com/en-us/library/ms142147.aspx – jcollum

+2

Bạn có thể giữ nguyên định dạng hình ảnh ban đầu bằng cách thay đổi lưu hình ảnh thành: image.Save (stream, image.RawFormat); – Marko

6

Sử dụng một dòng bộ nhớ

using(MemoryStream ms = new MemoryStream()) 
{ 
    image.Save(ms, ...); 
    return ms.ToArray(); 
} 
Các vấn đề liên quan