2015-11-08 53 views
6

到文件是否有UWP(視窗通用平臺)的如何保存圖像從剪貼板中UWP

Clipboard.GetImage().Save(FileName, Imaging.ImageFormat.Jpeg) 

任何等效? 也就是說將剪貼板中的圖形圖像保存爲jpg格式文件。

我在找vb.net/C#的例子。

我已經開始與

Dim datapackage = DataTransfer.Clipboard.GetContent() 
If datapackage.Contains(StandardDataFormats.Bitmap) Then 
Dim r As Windows.Storage.Streams.RandomAccessStreamReference = Await datapackage.GetBitmapAsync() 

...

,但我不知道如何繼續(即使我甚至正確啓動)。

回答

5

第一步是嘗試從剪貼板中獲取圖像,如果它存在:

var dataPackageView = Windows.ApplicationModel.DataTransfer.Clipboard.GetContent(); 
if (dataPackageView.Contains(StandardDataFormats.Bitmap)) 
{ 
    IRandomAccessStreamReference imageReceived = null; 
    try 
    { 
     imageReceived = await dataPackageView.GetBitmapAsync(); 
    } 
    catch (Exception ex) 
    { 
    } 

如果它存在,啓動一個保存文件選擇器,選擇保存的圖像,並複製圖像流到新文件。

if (imageReceived != null) 
    { 
     using (var imageStream = await imageReceived.OpenReadAsync()) 
     { 
      var fileSave = new FileSavePicker(); 
      fileSave.FileTypeChoices.Add("Image", new string[] { ".jpg" }); 
      var storageFile = await fileSave.PickSaveFileAsync(); 

      using (var stream = await storageFile.OpenAsync(FileAccessMode.ReadWrite)) 
      { 
       await imageStream.AsStreamForRead().CopyToAsync(stream.AsStreamForWrite()); 
      } 
     } 
    } 
} 
+0

謝謝。看上去不錯。我也喜歡我的3條線是好的,我的意思是好的開始(除了缺少try/catch)。 jiri tywoniak –

+0

這不起作用,當我嘗試保存屏幕截圖 – Matt

+0

請注意,儘管您已給文件一個.jpg擴展名,但它仍然是一個BMP文件。您需要將實際像素數據轉換爲JPG,PNG等格式保存。 –