2010-11-01 45 views
9

Tôi cần chuyển đổi hình ảnh thành bitmap.Chuyển đổi hình ảnh sang bitmap biến nền đen

ban đầu một gif được đọc dưới dạng byte và sau đó được chuyển đổi thành Hình ảnh.

Nhưng khi tôi thử chuyển đổi hình ảnh thành bản đồ bit, đồ họa hiển thị trong hình tượng của tôi có nền đen khi được sử dụng để có màu trắng.

Đây là mã:

var image = (System.Drawing.Image)value; 
     // Winforms Image we want to get the WPF Image from... 
     var bitmap = new System.Windows.Media.Imaging.BitmapImage(); 
     bitmap.BeginInit(); 
     MemoryStream memoryStream = new MemoryStream(); 
     // Save to a memory stream... 
     image.Save(memoryStream, ImageFormat.Bmp); 
     // Rewind the stream... 
     memoryStream.Seek(0, System.IO.SeekOrigin.Begin); 
     bitmap.StreamSource = memoryStream; 
     bitmap.EndInit(); 
     return bitmap; 

một ai có thể giải thích tại sao nền sẽ đen và làm thế nào tôi có thể ngăn chặn nó làm điều này.

Cảm ơn

Trả lời

21

Không lưu dưới dạng tệp bitmap. Định dạng tệp không hỗ trợ tính minh bạch, vì vậy, hình ảnh sẽ được lưu mà không có độ trong suốt.

Thay vào đó, bạn có thể sử dụng định dạng tệp PNG. Điều đó sẽ bảo toàn tính minh bạch.

Nếu bạn thực sự cần nó để sử dụng định dạng tệp bitmap, trước tiên bạn phải làm cho nó không trong suốt. Tạo một bitmap mới có cùng kích thước, sử dụng phương thức Graphics.FromImage để lấy đối tượng đồ họa để vẽ lên hình ảnh, sử dụng phương thức Clear để tô màu nền với màu nền bạn muốn, sử dụng phương pháp DrawImage để vẽ hình ảnh của bạn lên trên nền sau đó lưu bitmap đó.

+0

Cảm ơn rất nhiều. Làm việc như một sự quyến rũ – SetiSeeker

+0

Làm việc tốt cho tôi. Có một chút mã hiển thị giải pháp này ở đây: http://stackoverflow.com/questions/6513633/convert-transparent-png-to-jpg-with-non-black-background-color – TripleAntigen

+0

Nhưng BMP không hỗ trợ tính minh bạch, nó không ? – Robula

Các vấn đề liên quan