2013-05-26 175 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

相關問題