2011-10-31 16 views
1

Webカメラからキャプチャした画像を別のファイル名のc:/ドライブに保存するにはどうすればよいですか?C#でファイル名の異なるウェブカメラからキャプチャした画像を保存するには

私は画像のウェブカメラをキャプチャして、それを私のc:ドライブに保存できましたが、わずかな問題があります。

/

(すなわち画像が保存されて別の名前 pix1.jpgpix2.jpgpixs3.jpgで放置前のものとは異なります、 pix4.jpg:私はそれはすでに私のCに保存された古いキャプチャ1を上書きしてはならない、画像が保存されるたびにしたいです等)。キャプチャし、特定のファイル名、使用に保存するためにあなたの方法では

+1

また、あなたはこれを行う場合、私はあなたがすべての時間/ファイル名のチェックをループを避けるために何かをすることを確認したい各画像 – xbonez

答えて

2

string fileName; 
int n = 0; 

do { 
    fileName = "pix" + (++n).ToString() + ".jpg"; 
} while(System.IO.File.Exists(fileName)); 

次にパスにfileNameを追加し、あなたは完了です。

+0

に一意のGUIDを生成するに見ることができます。例えば。私は 'n'を保存し、毎回それを再利用します。たぶんそれは、各プログラムの起動をリセットさせますが、このメソッドの呼び出しごとにリセットさせないでください。 –

+0

' //イメージをjpegとして保存します。 // image.Save( "c:\\ traffic_light \\ image.jpeg"、System.Drawing.Imaging.ImageFormat.jpg); ' – DaveChika

+0

@DaveChika:あなたのパス(ファイル名を引いたもの)と 'fileName'を連結します。 – Ryan

1

現在の番号付き出力画像を追跡できない場合は、現在存在するファイルを見て、最大番号を判断して、次の番号のファイルを追加することができます。

int max = 0; 
var files = Directory.EnumerateFiles(@"C:\pictures", "pix*.jpg"); 
if(files.Any()) 
    max = files.Select(x => Convert.ToInt32(Path.GetFileNameWithoutExtension(x.Name) 
               .Substring("pix".Length))) 
      .Max(); 
string fileName = Path.Combine(@"C:\pictures", string.Format("pix{0}.jpg", max + 1)); 
+0

BROKENglass、これはイメージを保存するための私のメソッドです、pls私のmethod.plsでurコードを使用することができますどのようにCで初心者です# – DaveChika

+0

public static void SAVEimage(System.Drawing.Image image) { // jpeg。 イメージ。保存( "c:\\ image1.gif"、System.Drawing.Imaging.ImageFormat.Jpeg); } – DaveChika

4

個人的に、私の代わりに数字を使用してのファイル名にソート可能な形式でフォーマットDateTimeを追加します。

string name = "pix"; 
string fileName = string.Format("{0}_{1}", name, DateTime.Now.ToString("u")); 

これはあなたのようにpix_201110310834pix_201110310835pix_201110310836、とのように見えるファイル名を与えます。

この手法では、正しいインデックスだけを使用することについて、もはや心配する必要はありません。 DateTimeは常に前進し続けます。

注:あなたは短い間隔を必要とする場合(ミリ秒は、多分)、あなたは 常にだけではなく、DateTime.Now.Ticksを追加することができ

  • タイムゾーンを移動したり、DSTを切り替えたりする場合は、中立のタイムゾーンを使用します。 (DateTime.UtcNowはあなたの友達です)
関連する問題