Advertisement
Guest User

Untitled

a guest
Apr 23rd, 2014
35
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.81 KB | None | 0 0
  1. private async void CreateSaveBitmapAsync(List<Canvas> results)
  2. {
  3. Client client = new Client("127.0.0.1", "13000");
  4.  
  5. var picker = new FileSavePicker();
  6. picker.FileTypeChoices.Add("Tiff Image", new string[] { ".tiff" });
  7. StorageFile file = await picker.PickSaveFileAsync();
  8.  
  9. if (file == null)
  10. {
  11. return;
  12. }
  13.  
  14. using (IRandomAccessStream stream = await file.OpenAsync(FileAccessMode.ReadWrite))
  15. {
  16. var encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.TiffEncoderId, stream);
  17.  
  18. for (int i = 0; i < results.Count; i++)
  19. {
  20. Canvas canvas = results[i];
  21.  
  22. RenderTargetBitmap renderTargetBitmap = new RenderTargetBitmap();
  23. await renderTargetBitmap.RenderAsync(canvas);
  24.  
  25. if (canvas != null)
  26. {
  27. if (file != null)
  28. {
  29. var pixels = await renderTargetBitmap.GetPixelsAsync();
  30.  
  31. byte[] bytes = pixels.ToArray();
  32.  
  33. encoder.SetPixelData(BitmapPixelFormat.Bgra8,
  34. BitmapAlphaMode.Ignore,
  35. (uint)canvas.Width, (uint)canvas.Height,
  36. 96, 96, bytes);
  37.  
  38. await encoder.GoToNextFrameAsync();
  39. }
  40. }
  41. }
  42. }
  43.  
  44. client.SendToServer(file);
  45. }
  46.  
  47. public async void SendToServer(byte[] bytes)
  48. {
  49. if (!_connected)
  50. {
  51. Debug.WriteLine("Must be connected to send!");
  52. return;
  53. }
  54.  
  55. Int32 len = 0; // Gets the UTF-8 string length.
  56.  
  57. //while (true)
  58. //{
  59. try
  60. {
  61. Debug.WriteLine("Trying to send data ...");
  62.  
  63. DataWriter writer = new DataWriter(_clientSocket.OutputStream);
  64.  
  65. writer.WriteUInt32((uint)(bytes.Length));
  66. writer.WriteBytes(bytes);
  67.  
  68. // Call StoreAsync method to store the data to a backing stream
  69. await writer.StoreAsync();
  70.  
  71. Debug.WriteLine("Data was sent" + Environment.NewLine);
  72.  
  73. // detach the stream and close it
  74.  
  75. writer.DetachStream();
  76. writer.Dispose();
  77.  
  78. }
  79. }
  80.  
  81. public Image byteArrayToImage(byte[] byteArrayIn)
  82. {
  83. MemoryStream ms = new MemoryStream(byteArrayIn);
  84. ms.Write(byteArrayIn, 0, byteArrayIn.Length);
  85.  
  86. Image returnImage = Image.FromStream(ms);
  87.  
  88. return returnImage;}
  89.  
  90. An exception of type 'System.ArgumentException' occurred in System.Drawing.dll but was not handled in user code
  91.  
  92. Additional information: Parameter is not valid.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement