Привет всем, сижу над новым проектом, и как оказалось все таки UWP это еще геморройнее чем WPF. А суть проблемы заключалось в следующем, я пишу клиент-серверное приложение. Сервер передает фотку в виде массива байто. А на стороне клиента в приложении на UWP необходимо принять этот массив байт и конвертировать в изображение. Все это конечно можно было без труда сделать сохранив картинку на диск, но я не шел легким путем, при том что я писал приложение под windows phone, а там свои заморочки. Спустя 2 часа попыток и пыток, все таки у меня получилось. Да бы не потерять в будущем код, возможно он и вам пригодится выкладываю его здесь.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
private void SendFoto() { //отправка команды на сервер IPEndPoint ipEndsend = new IPEndPoint(IPAddress.Parse(address), port); Socket socksend = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.IP); socksend.Connect(ipEndsend); string message = "Foto"; byte[] data = Encoding.ASCII.GetBytes(message); socksend.Send(data); // socksend.Send(Encoding.ASCII.GetBytes("test")); //нижняя часть получения ответа в виде файла от сервера int bytes = 0; const int bufferSize = 8192; int val = 0; using (MemoryStream memStream = new MemoryStream()) { byte[] buffer = new byte[bufferSize]; do { val = bytes; int received = socksend.Receive(buffer); memStream.Write(buffer, 0, received); bytes += received; // Console.WriteLine(bytes); } while (socksend.Available > 0); // while (val != bytes); memStream.Seek(0, SeekOrigin.Begin); BitmapImage bmp = new BitmapImage(); bmp.SetSource(memStream.AsRandomAccessStream()); image.Source = bmp; } bytes = 0; // закрываем сокет socksend.Shutdown(SocketShutdown.Both); // socksend.Close(); } |
Загвоздка была в незнании схожих методов из wpf, без определенных функций, которые ввели меня в заблуждение. Однако мне все же удалось использовать в качестве источника MemoryStream для BitmapImage, так большинство примеров через URL передавали путь к изображений. Надеюсь это вам помогло.