2014-09-23 67 views
1

我想從控制器返回一個圖像,並能夠應用我自己的過濾器。加載遠程圖像並從控制器寫入

我創建了一個控制器,並將它喜歡return Content(Img.BinaryData,"image/jpeg");

不需要的圖。

我正在使用DynamicImage插件獲取遠程圖像並對其執行一些過濾器,但它返回一個System.Windows.Media.Imaging.WriteableBitmap對象。

這裏是我最遠的,但我想它返回的二進制數據:

using SoundInTheory.DynamicImage.Sources; 

var composition = new Composition(); 
ImageLayer layer = new ImageLayer { Source = new RemoteImageSource { Url = "http://www.google.com/images/srpr/logo4w.png" } }; 
composition.Layers.Add(layer); 

GeneratedImage generatedImage = composition.GenerateImage(); 

var Img = generatedImage.Image; // returns System.Windows.Media.Imaging.WriteableBitmap 

return Content(Img.ToString(),"image/jpeg"); 

缺少什麼我在這裏?

回答

1

試試這個:

var Img = generatedImage.Image 

var encoder = new JpegBitmapEncoder(); 
var bmFrame = BitmapFrame.Create(Img); 
encoder.Frames.Add(bmFrame); 
encoder.QualityLevel = 100; 

var res = new byte[0]; 

using (var stream = new MemoryStream()) 
{    
    encoder.Frames.Add(bmFrame); 
    encoder.Save(stream); 
    res = stream.ToArray(); 
    stream.Close(); 
} 

return File(res, "image/jpeg"); 

(本的BitmapSource爲byte []轉化率由https://stackoverflow.com/a/11085124/1625737拍攝)

+0

非常感謝你,這工作。 – 2014-09-23 20:45:35