翻譯|使用教程|編輯:胡濤|2022-12-16 16:22:39.687|閱讀 201 次
概述:本教程介紹如何創(chuàng)建使用 LEADTOOLS SDK 將圖像轉(zhuǎn)換為視頻的 C# Windows 控制臺應(yīng)用程序。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
LeadTools是一包集合集合集合,用于用于文檔,醫(yī)療,成像和和多媒體多媒體整合到桌面桌面,,服務(wù)器服務(wù)器,,平板平板電腦電腦,,,網(wǎng)絡(luò)網(wǎng)絡(luò)網(wǎng)絡(luò)網(wǎng)絡(luò)網(wǎng)絡(luò)網(wǎng)絡(luò)和方案方案方案方案,OCR,OMR,表單識別,Pdf,Pdf,打印獲,歸檔,注釋,注釋和顯示。領(lǐng)先處理技術(shù)技術(shù)
本教程介紹如何創(chuàng)建使用 LEADTOOLS SDK 將圖像轉(zhuǎn)換為視頻的 C# Windows 控制平臺應(yīng)用程序。
概要 | |
---|---|
概論 | 本教程介紹如何使用 LEADTOOLS 多媒體 SDK 技術(shù)在 C# Windows 控制平臺應(yīng)用程序中從多個圖形創(chuàng)建視頻 |
完成時間 | 30分鐘 |
視覺工作室項目 | |
平臺 | Windows C# 控制平臺應(yīng)用程序 |
集成開發(fā)環(huán)境 | 視覺工作室 2017、2019 |
開發(fā)許可 | 領(lǐng)導(dǎo)工具 |
用另一種語言考試 |
|
在使用文件查看器轉(zhuǎn)換文件 - C# .NET Core教程之前,通過查看添加引用和設(shè)置許可證明教程熟悉創(chuàng)建項目的基本步驟。
教程中創(chuàng)建的項目副本開始。如果您沒有該項目,請點擊該教程中的步驟創(chuàng)建它。
所需要的參考取決定于項目的目標(biāo)的。可以通過本地DLL引用添加引用。
本教程需要以下本地DLL,它們位于<INSTALL_DIR>\LEADTOOLS22\Bin\Dotnet4\x64:
還需要下面非LEADTOOLS DLL:
具有特定功能所需要的DLL的完整列表,請參閱。
不同的SDK 功能需要不同的引用。有完整的列表,請參考。
設(shè)置許可證文件許可證解鎖需功能。它必須調(diào)用任何工具數(shù)之前設(shè)置。。。有關(guān)有關(guān)有關(guān),包括信息信息信息信息信息信息。。。。。。。。
有兩種類型的運(yùn)行時許可以證明:
筆記
添加LEADTOOLS NuGet引用和設(shè)置許可在添加引用和設(shè)置許可教程中有更詳細(xì)的介紹。
創(chuàng)建項目、添加參考和設(shè)置許可以證明后,就可以開始編寫代碼了。
在解決方案資源管理器中,打開Program.cs。在程序類中,將以下語句添加到using頂部的塊中:
【C#】
// 在頂部使用塊 使用系統(tǒng); 使用系統(tǒng)文本; 使用 Leadtools; 使用 Leadtools.Codecs; 使用 Leadtools.Barcode; 使用 System.IO;
seTResolution(),getBitMapsize(Bitmap BMP)和和和和和方法方法seTSampletime(MediaSample MS,Long Frameno,Double AvgTimePerframe)。 、獲取位置圖大小和設(shè)置采集時間。
【C#】
靜態(tài)無效 SetResolution(RasterImage 圖像) { 如果 (image.BitsPerPixel != 24) { ColorResolutionCommand cmd = new ColorResolutionCommand(); cmd.BitsPerPixel = 24; cmd.Mode = ColorResolutionCommandMode.InPlace; cmd.運(yùn)行(圖像); } } static int GetBitmapSize(位圖 bmp) { int BytesPerLine = ((bmp.Width * 24 + 31) & ~31) / 8; 返回 BytesPerLine * bmp.Height; } static void SetSampleTime(MediaSample ms, long frameNo, double AvgTimePerFrame) { 雙倍時間開始; 雙倍時間結(jié)束; timeStart = frameNo * AvgTimePerFrame; timeEnd = (frameNo + 1) * AvgTimePerFrame; //計算timeStart的高低部分 ms.SetTime((長)timeStart, (long)timeEnd); }
在方法調(diào)用后Program.cs添加一個新方法調(diào)用并生成在方法中調(diào)用它。添加以下代碼以將給定文件中的圖像轉(zhuǎn)換為視頻。MainSetLicense();
靜態(tài)無效生成() { // 創(chuàng)建示例源對象 SampleSource smpsrc = new SampleSource(); ConvertCtrl convertCtrl = new ConvertCtrl(true); // 創(chuàng)建一個新的媒體類型包裝器 媒體類型 mt = new MediaType(); string sourceDirectory = @"C:\LEADTOOLS22\Resources\Images"; string outputFile = @"C:\LEADTOOLS22\Resources\Images\Video-Result.avi"; 雙 fps = 5.0;//每秒幀數(shù) 位圖 bmp = new Bitmap(800, 600, PixelFormat.Format24bppRgb); 雙 AvgTimePerFrame = (10000000 / fps); string[] files = Directory.GetFiles(sourceDirectory, "*.jpg"); // 設(shè)置類型為 24 位 RGB 視頻 mt.Type = Constants.MEDIATYPE_Video; mt.SubType = Constants.MEDIASUBTYPE_RGB24; // 設(shè)置格式 mt.FormatType = Constants.FORMAT_VideoInfo; VideoInfoHeader vih = new VideoInfoHeader(); int bmpSize = GetBitmapSize(bmp); // 設(shè)置視頻信息頭 vih.bmiHeader.biCompression = 0; // BI_RGB vih.bmiHeader.biBitCount = 24; vih.bmiHeader.biWidth = 800; vih.bmiHeader.biHeight = 600; vih.bmiHeader.biPlanes = 1; vih.bmiHeader.biSizeImage = bmpSize; vih.bmiHeader.biClrImportant = 0; vih.AvgTimePerFrame.lowpart = (int)AvgTimePerFrame; vih.dwBitRate = (int)(bmpSize * 8 * fps); mt.SetVideoFormatData(vih, null, 0); // 設(shè)置匹配位圖大小的固定大小樣本 mt.SampleSize = bmpSize; mt.FixedSizeSamples = true; // 分配源媒體類型 smpsrc.SetMediaType(mt); // 不要設(shè)置壓縮器 convertCtrl.VideoCompressors.MCmpMJpeg.Selected = true; // 分配轉(zhuǎn)換器源 convertCtrl.SourceObject = smpsrc; // 設(shè)置輸出文件名 convertCtrl.TargetFile = outputFile; convertCtrl.TargetFormat = TargetFormatType.AVI; convertCtrl.StartConvert(); 詮釋我= 0; 位圖數(shù)據(jù) bmpData; byte[] a = new byte[bmpSize]; 矩形 rect = new Rectangle(0, 0, bmp.Width, bmp.Height); 使用 (RasterCodecs 編解碼器 = new RasterCodecs()) { foreach(文件中的字符串 pageFileName) { 使用 (RasterImage image = codecs.Load(pageFileName)) { 設(shè)置分辨率(圖像); // 將加載的圖像重新調(diào)整為 Bitmap 的大小 SizeCommand sizecmd = new SizeCommand(); sizecmd.Width = bmp.Width; sizecmd.Height = bmp.Height; sizecmd.Run(圖片); ImageIncompatibleReason 原因 = RasterImageConverter.TestCompatible(image, true); PixelFormat pf = RasterImageConverter.GetNearestPixelFormat(圖像); 如果(原因!= ImageIncompatibleReason.Compatible) { RasterImageConverter.MakeCompatible(image, pf, true); } bmp = (位圖)RasterImageConverter.ChangeToImage(圖像, ChangeToImageOptions.ForceChange); // 位圖在左下方 bmp.RotateFlip(RotateFlipType.RotateNoneFlipY); MediaSample ms = smpsrc.GetSampleBuffer(30000); ms.SyncPoint = true; bmpData = bmp.LockBits(rect, ImageLockMode.ReadWrite, bmp.PixelFormat); Marshal.Copy(bmpData.Scan0, a, 0, bmpSize); bmp.UnlockBits(bmpData); ms.SetData(bmpSize, a); SetSampleTime(ms, i, AvgTimePerFrame); smpsrc.DeliverSample(1000, 毫秒); 我++; } } bmp.RotateFlip(RotateFlipType.RotateNoneFlipY); bmpData = null; smpsrc.DeliverEndOfStream(1000); 系統(tǒng).Threading.Thread.Sleep(1); MessageBox.Show("完成"); } }
按F5或選Debug -> Start Debugging運(yùn)行項目目。
如果步驟正確,應(yīng)用程序會運(yùn)行并從<INSTALL_DIR>\LEADTOOLS22\Resources\Images目錄中收集所有JPEG文件,并從靜止圖像創(chuàng)建AVI視頻。
以上方便是從靜止圖像創(chuàng)作視頻 ,如果您還有其他疑問,歡迎咨詢我們或者加入我們的官方技術(shù)交流群。
歡迎下載|體驗更多LEADTOOL產(chǎn)品
您還可以加入產(chǎn)品技術(shù)交流Q群:731259648
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn