2013-11-26 162 views
0

我是C#的新手,並正在爲Windows Phone 8進行學習開發。我正在製作圖像編輯應用程序。 有沒有辦法將編輯後的圖像保存在相機膠捲中而不是保存的照片上。保存編輯的圖像到相機膠捲

使用PhotoChooserTask返回一個PhotoResult。

private WriteableBitmap _imageBitmap = null; 

    private void Button_Click(object sender, RoutedEventArgs e) 
    { 
     PhotoChooserTask chooser = new PhotoChooserTask(); 
     chooser.Completed += choosenImage; 
     chooser.Show(); 
    } 

    private void choosenImage(object sender, PhotoResult e) 
    { 
     if (e.TaskResult != TaskResult.OK) { return; } 
     _imageBitmap.SetSource(e.ChosenPhoto); 
     dummyImage.Source = _thumbImageBitmap; 

     //MediaLibrary library = new MediaLibrary(); 
     //library.SavePictureToCameraRoll(String, Stream); 
    } 

我想將此PhotoResult(圖像)保存在相機膠捲中。我做了一點點研究,發現

MediaLibrary.SavePictureToCameraRoll Method

該方法有助於

MediaLibrary.SavePictureToCameraRoll (String, Stream) 
Save the specified image Stream as a Picture in the Windows Phone camera roll. 

OR

MediaLibrary.SavePictureToCameraRoll (String, Byte[]) 
Save the specified byte array as a Picture in the Windows Phone camera roll. 

如何在我的代碼實現此方法?

回答

0

e.ChosenPhoto已經是一個流,所以你可以設置它像這樣:

編輯:這應該可以解決這個問題,使用流的兩倍。您可以簡單地尋求流的開始並重用e.ChosenPhoto,但我無法測試,直到我回家。

private void choosenImage(object sender, PhotoResult e) 
{ 
    if (e.TaskResult != TaskResult.OK) 
    { 
     return; 
    } 
    Stream theCopy = new Stream(); 
    e.ChosenPhoto.CopyTo(theCopy); 
    e.ChosenPhoto.Seek(0, SeekOrigin.Begin); 

    _imageBitmap.SetSource(e.ChosenPhoto); 
    dummyImage.Source = _thumbImageBitmap; 

    MediaLibrary library = new MediaLibrary(); 
    library.SavePictureToCameraRoll(String, theCopy); 
} 
+0

我試過了,但它給了我錯誤。 '在Microsoft.Xna.Framework.ni.dll中發生類型爲「System.InvalidOperationException」的異常,但未在用戶代碼中處理。 如果有這種異常的處理程序,該程序可能會安全地繼續'............我的代碼='library.SavePictureToCameraRoll(「image.jpg」,e.ChosenPhoto)'; –

+0

我想你不能在同一個流中讀兩次。 –

+0

我已經更新了一些額外的電話,可能會解決這個問題。 – steveg89

相關問題