流到图像并返回

Sha*_*ean 4 .net c# image-processing filestream

我正在Stream转换它Image,处理该图像,然后返回一个FileStream.

这是性能问题吗?如果没有,最优化的方式是转换并返回流?

public FileStream ResizeImage(int h, int w, Stream stream)
{
       var img = Image.FromStream(stream);

       /* ..Processing.. */

       //converting back to stream? is this right?
       img.Save(stream, ImageFormat.Png);

       return stream;
} 
Run Code Online (Sandbox Code Playgroud)

正在运行的情况:用户在我的站点上传图像(控制器给我一个Stream,我调整它的大小,然后将此流发送到rackspace(Rackspace需要一个FileStream).

Dar*_*rov 9

你基本上想要这样的东西,不是吗:

public void Resize(Stream input, Stream output, int width, int height)
{
    using (var image = Image.FromStream(input))
    using (var bmp = new Bitmap(width, height))
    using (var gr = Graphics.FromImage(bmp))
    {
        gr.CompositingQuality = CompositingQuality.HighSpeed;
        gr.SmoothingMode = SmoothingMode.HighSpeed;
        gr.InterpolationMode = InterpolationMode.HighQualityBicubic;
        gr.DrawImage(image, new Rectangle(0, 0, width, height));
        bmp.Save(output, ImageFormat.Png);
    }
}
Run Code Online (Sandbox Code Playgroud)

将使用这样:

using (var input = File.OpenRead("input.jpg"))
using (var output = File.Create("output.png"))
{
    Resize(input, output, 640, 480);
}
Run Code Online (Sandbox Code Playgroud)