本教程展示了如何创建一个c# Windows控制台应用程序,它使用LEADTOOLS SDK将图片转换成视频。
概述 | |
---|---|
总结 | 本教程介绍了如何使用SDK LEADTOOLS多媒体技术来创建一个视频从多个图像在c188宝金博怎么下载# Windows控制台应用程序 |
完成时间 | 30分钟 |
Visual Studio项目 | 下载教程项目(4 KB) |
平台 | Windows c#控制台应用程序 |
IDE | Visual Studio 2017中,2019年 |
开发许可 | 下载LEADTOOLS |
熟悉基本的步骤创建一个项目的审查添加引用和设置一个许可证教程,在工作之前创建一个视频从静态图像,c#控制台教程。
从项目中创建的副本添加引用和设置一个许可证教程。如果你没有这个项目,按照这个教程中的步骤创建它。
的引用需要取决于项目的目的。可以通过当地添加引用DLL参考。
本教程需要以下地方dll,位于< INSTALL_DIR > \ LEADTOOLS21 \ Bin \ Dotnet4 \ x64
:
Interop.LMDSKernelLib2.dll
Interop.LMVResizeLib.dll
Leadtools.dll
Leadtools.Codecs.dll
Leadtools.Drawing.dll
Leadtools.ImageProcessing.Color.dll
Leadtools.ImageProcessing.Core.dll
Leadtools.188宝金博怎么下载Multimedia.dll
以下Non-LEADTOOLS dll也要求:
System.Deployment.dll
System.Drawing.dll
System.Windows.Forms
stdole.dll
为哪些dll的完整列表所需的特定功能,参考文件包含在您的应用程序。
许可打开所需的特性。它必须设置工具箱函数被调用之前。详情,包括教程为不同的平台,请参考设置一个运行时许可。
有两种类型的运行时许可证:
请注意
添加LEADTOOLS当地DLL的引用和设置许可中会详细介绍添加引用和设置一个许可证教程。
与项目创建、添加引用,许可,可以开始编码。
在解决方案资源管理器,打开Program.cs
。在程序
类,添加以下语句使用
块顶部:
/ /使用块
使用系统;
使用先;
使用System.Drawing;
使用System.Drawing.Imaging;
使用System.Windows.Forms;
使用System.Runtime.InteropServices;
使用Leadtools;
使用Leadtools.Codecs;
使用Leadtools.Drawing;
使用Leadtools.ImageProcessing;
使用Leadtools.188宝金博怎么下载Multimedia;
添加三个新方法SetResolution ()
,GetBitmapSize位图(bmp)
,SetSampleTime (MediaSample女士、frameNo长、双AvgTimePerFrame)
。这些方法将调用后,将图片转换成视频添加代码。添加以下代码来设置分辨率,得到位图的大小,设置采样时间。
静态无效SetResolution (RasterImage图片)
{
如果(图片。BitsPerPixel ! = 24)
{
ColorResolutionCommand cmd =新ColorResolutionCommand ();
cmd。BitsPerPixel = 24;
cmd。模式= ColorResolutionCommandMode.InPlace;
cmd.Run(图片);
}
}
静态intGetBitmapSize位图(bmp)
{
intBytesPerLine = ((bmp。宽度* 24 + 31)& ~ 31)/ 8;
返回BytesPerLine * bmp.Height;
}
静态无效SetSampleTime (MediaSample女士,长frameNo,双AvgTimePerFrame)
{
双timeStart;
双timeEnd;
timeStart = frameNo * AvgTimePerFrame;
timeEnd = (frameNo + 1) * AvgTimePerFrame;
/ /计算高低timeStart的一部分
ms.SetTime ((长)timeStart, (长)timeEnd);
}
在Program.cs
添加一个新方法生成
并调用它主要
方法后SetLicense ();
方法调用。添加以下代码来给定文件中的图片转换成视频。
静态无效生成()
{
/ /创建示例源对象
SampleSource smpsrc =新SampleSource ();
ConvertCtrl ConvertCtrl =新ConvertCtrl (真正的);
/ /创建一个新的媒体类型的包装器
MediaType太=新MediaType ();
字符串sourceDirectory =@“C: \ LEADTOOLS21 \ Resources \图片”;
字符串outputFile =@“C: \ LEADTOOLS21 \资源\ \ Video-Result.avi图像”;
双fps = 5.0;/ /帧每秒
位图bmp =新位图(800、600、PixelFormat.Format24bppRgb);
双AvgTimePerFrame = (10000000 / fps);
字符串[]文件= Directory.GetFiles (sourceDirectory,“* . jpg”);
/ /类型设置为24位RGB视频
mt.Type = Constants.MEDIATYPE_Video;
mt.SubType = Constants.MEDIASUBTYPE_RGB24;
/ /设置格式
mt.FormatType = Constants.FORMAT_VideoInfo;
VideoInfoHeader vih =新VideoInfoHeader ();
intbmpSize = GetBitmapSize (bmp);
/ /设置视频信息头
vih.bmiHeader。biCompression = 0;/ / BI_RGB
vih.bmiHeader。biBitCount = 24;
vih.bmiHeader。biWidth = 800;
vih.bmiHeader。biHeight = 600;
vih.bmiHeader。双翼飞机= 1;
vih.bmiHeader。biSizeImage = bmpSize;
vih.bmiHeader。biClrImportant = 0;
vih.AvgTimePerFrame。lowpart = (int)AvgTimePerFrame;
vih。dwBitRate = (int)(bmpSize * 8 * fps);
mt.SetVideoFormatData (vih零,0);
/ /设置固定大小的样本匹配位图的大小
mt.SampleSize = bmpSize;
mt.FixedSizeSamples =真正的;
/ /分配源媒体类型
smpsrc.SetMediaType (mt);
/ /不设置一个压缩机convertCtrl.VideoCompressors.MCmpMJpeg。选择= true;
/ /分配转换器源
convertCtrl。SourceObject = smpsrc;
/ /设置输出文件的名字
convertCtrl。TargetFile = outputFile;
convertCtrl。TargetFormat = TargetFormatType.AVI;
convertCtrl.StartConvert ();
int我= 0;
BitmapData bmpData;
字节[]a =新字节[bmpSize];
矩形矩形=新矩形(0,0,bmp。宽度,bmp.Height);
使用(RasterCodecs编解码器=新RasterCodecs ())
{
foreach(字符串pageFileName在文件)
{
使用(RasterImage图像= codecs.Load (pageFileName))
{
SetResolution(图片);
/ /用户加载图像位图的大小
SizeCommand sizecmd =新SizeCommand ();
sizecmd。宽度= bmp.Width;
sizecmd。身高= bmp.Height;
sizecmd.Run(图片);
ImageIncompatibleReason原因= RasterImageConverter.TestCompatible(图像,真正的);
PixelFormat pf = RasterImageConverter.GetNearestPixelFormat(图片);
如果(理由! = ImageIncompatibleReason.Compatible)
{
RasterImageConverter。pf MakeCompatible(图片,真正的);
}
bmp = RasterImageConverter(位图)。ChangeToImage(图片、ChangeToImageOptions.ForceChange);
/ /位图左下角
bmp.RotateFlip (RotateFlipType.RotateNoneFlipY);
MediaSample = smpsrc.GetSampleBuffer女士(30000);
ms.SyncPoint =真正的;
bmpData = bmp。LockBits(矩形、ImageLockMode。读写,bmp.PixelFormat);
Marshal.Copy (bmpData。Scan0, 0 bmpSize);
bmp.UnlockBits (bmpData);
ms.SetData (bmpSize);
SetSampleTime(女士,我,AvgTimePerFrame);
smpsrc。DeliverSample女士(1000年);
我+ +;
}
}
bmp.RotateFlip (RotateFlipType.RotateNoneFlipY);
bmpData =零;
smpsrc.DeliverEndOfStream (1000);
System.Threading.Thread.Sleep (1);
MessageBox.Show (“完成”);
}
}
按运行项目F5,或通过选择调试- >开始调试。
如果是正确的步骤,应用程序运行和收集所有的JPEG文件< INSTALL_DIR > \ LEADTOOLS21 \ \图片资源
目录,并创建一个AVI视频从静态图像。