2015-11-08 57 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等格式保存。 –