投稿

9月, 2012の投稿を表示しています

メモ: ffmpeg を用いた連番ファイルへの変換方法

ffmpeg のオプションをすぐに忘れてしまうので、ここにメモしておく。 入力ファイルは -i にて指定。 連番ファイルに出力する場合は出力タイプとして -f image2 を指定。 ファイル名には printf フォーマットが使用出来る。  デインターレースは -deinterlace 例えば、test.avi を   test_deinter_001.png   test_deinter_002.png   test_deinter_003.png      : などと変換したい場合は、   ffmpeg -i test.avi -deinterlace -f image2 test_deinter_%03d.png  とすれば良い。

[ C# ] 複数ページからなる TIFF ファイルの作成方法

諸事情により、レイヤ構造を持つ画像ファイルを C# より出力する必要が出てきました。 レイヤ構造と言えば Photoshop の .psd フォーマットが身近で良いのですが、C# の標準ライブラリではサポートしてない為、他のフォーマットを探さないといけません。幸いな事に TIFF はマルチフレーム対応だし、C# の標準ライブラリもマルチフレーム対応との事なので、こちらのページ( http://csharper.blog57.fc2.com/blog-entry-158.html )や、こちらのページ( http://www.bobpowell.net/generating_multipage_tiffs.htm )を参考にプログラムを作ってみました。 どうも MemoryStream の後処理か何かが悪いのか、僕のプログラムだと複数画像を生成すると OutOfMemory が出てしまうので、メモリストリームは使わない方法で作ってみました。 実際のコードからエッセンスだけ抜き出すとこんな感じです(ところで Blogger でソースコードを綺麗に表示するのはどうすれば良いのだろうか?): // ベース画像と生成した画像からなる 2 フレームの TIFF ファイルを n 個作る。 for(int i=0; i<n; i++) {     Console.Write("processing "+i+" ...");     string tiffImagePath=@"baseImage";     tiffImagePath+=i.ToString("00")+".tif";     int imageWidth;     if(File.Exists(tiffImagePath)==false) { continue; }     Bitmap tiffImage=new Bitmap(tiffImagePath);     imageWidth=tiffImage.Width;     Bitmap upperImage=genImage(imageWidth); // 何か絵を作る     // TIFF エンコーダの取得     ImageC