在本地磁盘中的一个文件夹中有一些jpg文件。我想把这些文件写入到avi视频文件。现在是用for询问一张一张的写。代码如下
/// <summary>
/// 获得临时截取的屏幕图片,生成avi
/// </summary>
private void AviSaveAs()
{
try
{
FileInfo[] dinfo = DInfo.GetFiles();
Array.Sort<FileInfo>(dinfo, new FIleLastTimeComparer());
for (int i = 0; i < dinfo.Length; i++)
{
//获得图像
Bitmap cache = new Bitmap(m_pictureFileName + "\\" + dinfo[i].ToString());
//由于转化为avi后呈现相反,所以翻转
cache.RotateFlip(RotateFlipType.Rotate180FlipX);
//载入图像
m_aviWriter.AddFrame(cache);
}
}
catch (Exception ex)
{
MessageBox.Show("写入文件失败!");
}
}图片有的时候很多。大小通常在100k到200k之间。在AddFrame的时候也会慢一点。
我在想用什么方法能快一点。我有一个思路不知道可以否。
用多线程。一个线程写一部分文件,然后生成一个avi。也就是说几个线程在写最后就生成几个avi。然后最后在总体合并成一个avi 。这样可以吗?? 或者有什么别的方法。谢谢了。
/// <summary>
/// 获得临时截取的屏幕图片,生成avi
/// </summary>
private void AviSaveAs()
{
try
{
FileInfo[] dinfo = DInfo.GetFiles();
Array.Sort<FileInfo>(dinfo, new FIleLastTimeComparer());
for (int i = 0; i < dinfo.Length; i++)
{
//获得图像
Bitmap cache = new Bitmap(m_pictureFileName + "\\" + dinfo[i].ToString());
//由于转化为avi后呈现相反,所以翻转
cache.RotateFlip(RotateFlipType.Rotate180FlipX);
//载入图像
m_aviWriter.AddFrame(cache);
}
}
catch (Exception ex)
{
MessageBox.Show("写入文件失败!");
}
}图片有的时候很多。大小通常在100k到200k之间。在AddFrame的时候也会慢一点。
我在想用什么方法能快一点。我有一个思路不知道可以否。
用多线程。一个线程写一部分文件,然后生成一个avi。也就是说几个线程在写最后就生成几个avi。然后最后在总体合并成一个avi 。这样可以吗?? 或者有什么别的方法。谢谢了。
解决方案 »
- 有谁知道怎么提取PDF的文字内容么,不能用第三方包。
- 问个google上的网页控件
- 动态生成的下拉列表怎样添加事件
- 在c#中我用webBrowser1控件打开网页,现在在其webBrowser1_Navigated过程中要修改某个控件Select 的值时,显示却空白
- 怎样在软件界面上放时钟(内详)
- visual studio c#连接了sql~为什么我的数据没办法写到数据库表
- 在C# VS2005中能不能做报表呀?在线等
- 水晶报表数据更新问题
- 很菜的问题:请高手进来看看.
- 关于winform程序接受大量数据,并将数据进行二维平面直角坐标系曲线显示的问题
- 一个小问题 about winform
- 如何自行实践MVC(范例)
我就嫌现在效率低才想有没有jpg直接插入avi。这样就能快一些