2013-05-26 120 views
1

我正在拍照并希望根据拍摄时间进行保存。将拍摄的图像保存到本地文件夹

我还想在当前目录中创建一个名为/ pictures的文件夹并将图片保存在该文件夹中。这是在C#& WPF中完成的。

这是我的代码:

Image newimage = new Image(); 
BitmapImage myBitmapImage = new BitmapImage(); 
myBitmapImage.BeginInit(); 

newimage.Source = Capture(true) // Take picture 

myBitmapImage.UriSource = new Uri(@"c:\" + 
      string.Format("{0:yyyy-MM-dd_hh-mm-ss-tt}", DateTime.Now) + ".jpg"); 
// Gives error: Could not find file 'c:\2013-05-26_04-40-25-AM.jpg' 

myBitmapImage.EndInit(); 
newimage.Source = myBitmapImage; 

newstackPanel.Children.Add(newimage); 

结果: 错误找不到文件 'C:\ 2013-05-26_04-44-59-AM.jpg'。

为什么它试图找到一个文件VS只是将文件保存在c:\驱动器?

+0

这是周围的其他方式,但看看http://www.codeproject.com/Questions/313384/Convert-image-to-Bitmap-Image -in-WPF-in-Csharp。它可能有帮助。 – Intermernet

+0

谢谢,我已经看了,但我仍然没有得到如何解决这个错误。 – xterminal0

+0

var newimage = new BitmapImage(...'(删除第一行) –

回答

1

如果你想要做的是保存图片到磁盘,那么你应该使用BitmapEncoder

JpegBitmapEncoder encoder = new JpegBitmapEncoder(); 
var image = Capture(true); // Take picture 
encoder.Frames.Add(BitmapFrame.Create(image)); 

// Save the file to disk 
var filename = String.Format("..."); 
using (var stream = new FileStream(filename, FileMode.Create)) 
{ 
    encoder.Save(stream); 
} 

上面的例子创建了一个JPEG图像,但你想要的任何编码器 - 世界粮食计划署自带内置PngTiffGifBmpWmp编码器英寸

+0

+ 1,但是由于OP显然希望编写一个JPEG图像,为什么不直接用JpegBitmapEncoder编写示例代码呢? – Clemens

+0

哦,没有看到。我已经更新了我的答案 –

+0

它可能也有点令人困惑,为什么'encoder'和'image'的声明位于using块中,但filename是外部的。我想如果只有保存电话会在那里,这会更容易理解。 – Clemens

相关问题