主にプログラミングに関して。Python, .NET Framework(C#), JavaScript, その他いくらか。
記事にあるサンプルやコードは要検証。使用に際しては責任を負いかねます

スポンサーサイト

                
tags:
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

C#: 複数のイメージファイルからaviファイルを作る

                
Pythonでイメージライブラリを使って画像を大量に生成したので、その画像をつなげてムービーにしたかった。プログラミングで処理したかったので、.NETでどうにかならんかと探したところ、aviを生成できそうな記事を見つけた。
http://www.codeproject.com/Articles/7388/A-Simple-C-Wrapper-for-the-AviFile-Library
http://stackoverflow.com/questions/9607712/create-video-from-streamed-images-c-sharp

上のリンクからソースを落として、.NET 4.0でコンパイルして使った。記事は.NET 1.1向けとなっているが、コンパイルしてムービー生成するまであまり問題なく使えた。

ムービー開始時に同じ画像を数秒間表示したかったので下記のように書いたところ、画像が上下反転を繰り返したのでループ毎にファイルを読み込むようにした。


bitmap = (Bitmap)Bitmap.FromFile(jpgFileList[0].FullName);
for (var x=0; x<20; x++)
{
aviStream.AddFrame(bitmap);
}
bitmap.Dispose();


using System;
using System.Drawing;
using System.IO;
using System.Collections.Generic;
using AviFile;

namespace AviMaker
{
class Program
{
public static void Main()
{
//http://www.codeproject.com/Articles/7388/A-Simple-C-Wrapper-for-the-AviFile-Library

//myReadyNAS device, got files via FTP from my webcam
var sourcePath = Directory.GetCurrentDirectory();
var jpgFileList = new DirectoryInfo(sourcePath).GetFiles(@"synth\*.jpg");

//load the first image
Bitmap bitmap = (Bitmap)Image.FromFile(jpgFileList[0].FullName);

//create a new AVI file
AviManager aviManager = new AviManager(sourcePath + @"\synthsized.avi", false);

//add a new video stream and one frame to the new file
//set IsCompressed = false
VideoStream aviStream = aviManager.AddVideoStream(false, 20, bitmap);

for (var x=0; x<20; x++)
{
bitmap = (Bitmap)Bitmap.FromFile(jpgFileList[0].FullName);
aviStream.AddFrame(bitmap);
bitmap.Dispose();
}

foreach (var file in jpgFileList)
{
bitmap = (Bitmap)Bitmap.FromFile(file.FullName);
aviStream.AddFrame(bitmap);
bitmap.Dispose();
}

aviManager.Close();
// Console.Write("\n");
// Console.Write("Press any key to continue . . . ");
// Console.ReadKey(true);
}
}
}
            

コメントの投稿

非公開コメント

プロフィール

hMatoba

Author:hMatoba
Github

最新記事
リンク
作ったものなど
月別アーカイブ
カテゴリ
タグリスト

検索フォーム
Amazon
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。