正在加载远程图像并从控制器写入

本文关键字:控制器 图像 加载 程图像 | 更新日期: 2023-09-27 18:24:11

我想从控制器返回一个图像,并能够在上面应用我自己的过滤器。

我创建了一个控制器,并希望它成为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");

我在这里错过了什么?

正在加载远程图像并从控制器写入

试试这个:

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)