2013-06-06 7 views
5

Ich möchte ein Bild in der Zwischenablage in Winrt zu Datei speichern. aber ich fand keinen Weg. Kannst du mir bitte helfen?Bild speichern Zwischenablage

var dataPackage = Clipboard.GetContent(); 
      var t = await dataPackage.GetBitmapAsync(); 
      var t2 = await t.OpenReadAsync(); 
      t2.AsStream(); 
      t2.Seek(0); 
      BitmapImage bitmapImage = new BitmapImage(); 
      bitmapImage.SetSource(t2); 
      Image image = new Image(); 
      image.Source = bitmapImage;< 
+1

Was ist das Problem? Tut dieser Fehler? – DonBoitnott

+0

kein Fehler. aber ich weiß nicht, wie ich es in Datei speichern kann. – Taladan

+0

Sie haben ein 'Image'-Objekt ... so:' image.Save ("C: \\ myDir \\ myFile.png", System.Drawing.Imaging.ImageFormat.Png); ' – DonBoitnott

Antwort

0

So einfach wie das, nur die letzte Zeile in die vorhandenen Code (zB für PNG)

var dataPackage = Clipboard.GetContent(); 
      var t = await dataPackage.GetBitmapAsync(); 
      var t2 = await t.OpenReadAsync(); 
      t2.AsStream(); 
      t2.Seek(0); 
      BitmapImage bitmapImage = new BitmapImage(); 
      bitmapImage.SetSource(t2); 
      Image image = new Image(); 
      image.Source = bitmapImage; 
      image.Save("ImagePathToStore.png", System.Drawing.Imaging.ImageFormat.PNG); 

Link for Supported imageformates

+0

Image.save ist in Windows.ui.controls.image unter Windows RT nicht verfügbar. – Taladan

+0

'image.Save' ist nicht der Teil von WinRT-APIs. – Xyroid

4

Hier gehen Sie :)

hinzugefügt Sie Bitte beachten kann keinen Ordner zum Speichern verwenden. Ich habe ApplicationData.Current.LocalFolder.Path als desination übergeben. Sie können FolderPicker verwenden und dann den Pfad des ausgewählten Ordners übergeben.

private async Task StoreImageFromClipboardAsync() 
{ 
    var dataPackage = Clipboard.GetContent(); 
    var formats = dataPackage.AvailableFormats; 
    if (formats.Contains("Bitmap")) 
    { 
     var t = await dataPackage.GetBitmapAsync(); 
     var file = await ChangeIRASRToStorageFileAsync(t, ApplicationData.Current.LocalFolder.Path, "Clipboard.png"); 
    } 
} 

private async Task<StorageFile> ChangeIRASRToStorageFileAsync(IRandomAccessStreamReference MyIRASR, String StorageFolderPath, String StorageFileName) 
{ 
    IRandomAccessStreamWithContentType MyIRASWCT = await MyIRASR.OpenReadAsync(); 
    StorageFolder MyStorageFolder = await StorageFolder.GetFolderFromPathAsync(StorageFolderPath); 
    StorageFile MyStorageFile = await MyStorageFolder.CreateFileAsync(StorageFileName, CreationCollisionOption.ReplaceExisting); 
    Windows.Storage.Streams.Buffer MyBuffer = new Windows.Storage.Streams.Buffer(Convert.ToUInt32(MyIRASWCT.Size)); 
    IBuffer iBuf = await MyIRASWCT.ReadAsync(MyBuffer, MyBuffer.Capacity, InputStreamOptions.None); 
    await FileIO.WriteBufferAsync(MyStorageFile, iBuf); 
    return MyStorageFile; 
} 
0

Im letzten Postbeispiel wird ein BMP-Bild anstelle eines PNG-Bildes gespeichert. Die folgende Lösung funktioniert für mich, wenn ich PNG-Dateien aus der Zwischenablage speichern möchte: