大數據我試圖使用Windows.ApplicationModel.DataTransfer.Clipboard類可供UWP應用程序讀取剪貼板內容(在粘貼圖像數據特別感興趣)。獲取剪貼板
這裏是我的示例代碼:
var clipboardContent = Clipboard.GetContent();
if (clipboardContent.Contains(StandardDataFormats.Bitmap))
{
var bitmap = await clipboardContent.GetBitmapAsync();
if (bitmap != null)
{
var stream = (await bitmap.OpenReadAsync()).AsStream();
// do something with the data in the stream
}
}
這工作正常較小的圖像。但是,當圖像較大,則clipboardContent.GetBitmapAsync()將拋出一個異常:
「System.Runtime.InteropServices.COMException」類型 的異常出現在mscorlib.ni.dll但在用戶沒有處理代碼
WinRT信息:源應用程序 提供的CF_BITMAP格式不能轉換爲流對象。
附加信息: 完整操作的內存不足。
即使圖像〜9.5MB,如果你在瀏覽器中打開它,它在剪貼板複製,然後嘗試將其粘貼到圖片的例子UWP應用程序使用上面的代碼,那麼你會遇到內存不足的問題。
有沒有辦法解決這個問題?
我無法重現您的問題。我測試你的代碼和你提供的圖像,它在我身邊很好。你能提供一些關於你的測試環境的細節嗎? –
我有一個WebView託管一個頁面,該頁面中的CKEditor + JavaScript檢測粘貼操作並使用window.external.notify通知我的C#代碼。然後我運行上面的代碼來加載粘貼的圖像數據,對其進行處理,然後將其插入到WebView中的CKEditor中。 我想這也取決於一臺機器有多少可用空間。我在運行多個應用程序(包括Visual Studio)的Surface Pro設備上運行。 我以爲GetBitmapAsync()將允許我一次讀取剪貼板數據的小塊,不管它有多大。但似乎並非如此! –