在C#中从内存流(视频)创建缩略图的最佳方法或库是什么?

时间:2016-03-04 09:18:19

标签: c# video dll movie video-thumbnails

我必须创建多个缩略图并在c#中保存在amazon s3上。我找不到可以从源文件中仅从内存流创建缩略图的库。但是没有文件来源,我只有上传的流,我不想保存localy文件。

谢谢你的帮助!

2 个答案:

答案 0 :(得分:3)

简单的c#代码可以为您完成此操作。您可以从字节数组创建缩略图。 首先通过以下代码将内存流对象转换为字节数组

byte[] bytes = memoryStream.ToArray();

然后您可以使用以下方法

public byte[] MakeThumbnail(byte[] myImage, int thumbWidth, int thumbHeight)
{
    using (MemoryStream ms = new MemoryStream())
    using (Image thumbnail = Image.FromStream(new MemoryStream(myImage)).GetThumbnailImage(thumbWidth, thumbHeight, null, new IntPtr()))
    {
        thumbnail.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
        return ms.ToArray();
    }
}

答案 1 :(得分:0)

  

我找不到只能从内存流创建缩略图的库   源文件

真的?因为我不需要一个库 - 我可以使用标准C#。

System.Drawing.Bitmap有一个接受流的构造函数。

  

但无法拥有文件来源,

实际上你可以 - 它被称为临时文件,在.NET(和windows)中有一个完整的机制。真。

但不需要它。阅读手册,创建一个位图(通过将您的字节数组打包到MemoryStream中)它应该可以工作。