internal static async Task<ExtractedImageData> TryExtractImageDataFromHtml(IDataObject data, ProcessingTaskMonitor processingTaskMonitor, long taskMonitorPanel) { string[] formats = data.GetFormats(); if (!formats.Contains("text/html")) { return new ExtractedImageData { Success = false }; } var obj = data.GetData("text/html"); string html = string.Empty; if (obj is string) { html = (string)obj; } else if (obj is MemoryStream) { MemoryStream ms = (MemoryStream)obj; byte[] buffer = new byte[ms.Length]; ms.Read(buffer, 0, (int)ms.Length); if (buffer[1] == (byte)0) // Detecting unicode { html = System.Text.Encoding.Unicode.GetString(buffer); } else { html = System.Text.Encoding.ASCII.GetString(buffer); } } Uri imageUri; if (TryExtractImageUri(html, out imageUri)) { processingTaskMonitor.SetPanelText(taskMonitorPanel, "Uploading image from web..."); var imageData = await TryExtractImageDataFromUri(imageUri); processingTaskMonitor.SetPanelText(taskMonitorPanel, "Uploaded"); return imageData; } else { return new ExtractedImageData { Success = false }; } }
internal static async Task <ExtractedImageData> TryExtractImageDataFromHtml(IDataObject data, ProcessingTaskMonitor processingTaskMonitor, long taskMonitorPanel) { string[] formats = data.GetFormats(); if (!formats.Contains("text/html")) { return(new ExtractedImageData { Success = false }); } var obj = data.GetData("text/html"); string html = string.Empty; if (obj is string) { html = (string)obj; } else if (obj is MemoryStream) { MemoryStream ms = (MemoryStream)obj; byte[] buffer = new byte[ms.Length]; ms.Read(buffer, 0, (int)ms.Length); if (buffer[1] == (byte)0) // Detecting unicode { html = System.Text.Encoding.Unicode.GetString(buffer); } else { html = System.Text.Encoding.ASCII.GetString(buffer); } } Uri imageUri; if (TryExtractImageUri(html, out imageUri)) { processingTaskMonitor.SetPanelText(taskMonitorPanel, "Uploading image from web..."); var imageData = await TryExtractImageDataFromUri(imageUri); processingTaskMonitor.SetPanelText(taskMonitorPanel, "Uploaded"); return(imageData); } else { return(new ExtractedImageData { Success = false }); } }