Классы, которые я использовал в C# для потоковой передачи видео по сети в C#, не принимаются в универсальных приложениях Windows. Так что, пожалуйста, кто-нибудь скажет мне, как создать bitmap, чтобы преобразовать его в байт [] отправить его через сокет и преобразовать его обратно в бит-карту. Прежде всего, C# в универсальных приложениях даже не распознает битмап типа переменной. он даже не распознает пространство имен system.drawing. благодаряпотоковое изображение в окнах универсальных приложений C#
1
A
ответ
0
Base64 в растровое изображение
string base64string=""; var fileStream = Base64ToStream(base64string); var memStream = new MemoryStream(); await fileStream.CopyToAsync(memStream); memStream.Position = 0; var bitmap = new BitmapImage(); bitmap.SetSource(memStream.AsRandomAccessStream()); lstBitImages.Insert(0, new PhotoModel(bitmap, "00", objPhoto.PhotoName, objPhoto.PhotoBase64, objPhoto.PhotoType, objPhoto.PhotoLink, ".jpg", "Visible", "Collapsed")); displayphotolst.Add(objPhoto); PhotoList.ItemsSource = lstBitImages;
Base64ToStream (base64string);
public Stream Base64ToStream(string base64String)
{
byte[] imageBytes = Convert.FromBase64String(base64String);
MemoryStream stream2 = new MemoryStream(imageBytes);
return stream2;
}
Изображение полный путь к растровый
objModel.PhotoId = "0";
var fullPath = string.Format(@"{0}\{1}", destinationFolder.Path, guid + "_" + file.Name);
string base64Image = string.Empty;
await Task.Run(() =>
{
Task.Yield();
var photo = File.ReadAllBytes(fullPath);
base64Image = Convert.ToBase64String(photo);
objModel.PhotoBase64 = base64Image;
});
var fileStream = Base64ToStream(base64Image);
var memStream = new MemoryStream();
await fileStream.CopyToAsync(memStream);
memStream.Position = 0;
var bitmap = new BitmapImage();
bitmap.SetSource(memStream.AsRandomAccessStream());
-2
После документации отл. https://docs.microsoft.com/en-us/windows/uwp/networking/sockets
MediaCapture mediaCapture;
string serviceNameForConnect = "22112";
string hostNameForConnect = "localhost";
NetworkAdapter adapter = null;
StreamSocket clientSocket = null;
private async void StartListener_Click(object sender, RoutedEventArgs e)
{
StreamSocketListener listener = new StreamSocketListener();
listener.ConnectionReceived += OnConnection;
await listener.BindServiceNameAsync(serviceNameForConnect);
}
private async void ConnectSocket_Click(object sender, RoutedEventArgs e)
{
HostName hostName;
mediaCapture = new MediaCapture();
await mediaCapture.InitializeAsync();
try
{
hostName = new HostName(hostNameForConnect);
}
catch (ArgumentException ex)
{
return;
}
clientSocket = new StreamSocket();
try
{
await clientSocket.ConnectAsync(hostName, serviceNameForConnect);
}
catch (Exception exception)
{
// If this is an unknown status it means that the error is fatal and retry will likely fail.
if (SocketError.GetStatus(exception.HResult) == SocketErrorStatus.Unknown)
{
throw;
}
}
}
private async void Send_Click(object sender, RoutedEventArgs e)
{
object outValue;
// Create a DataWriter if we did not create one yet. Otherwise use one that is already cached.
DataWriter writer;
if (!CoreApplication.Properties.TryGetValue("clientDataWriter", out outValue))
{
writer = new DataWriter(clientSocket.OutputStream);
CoreApplication.Properties.Add("clientDataWriter", writer);
}
else
{
writer = (DataWriter)outValue;
}
while (true)
{
var memoryStream = new InMemoryRandomAccessStream();
await mediaCapture.CapturePhotoToStreamAsync(ImageEncodingProperties.CreateJpeg(), memoryStream);
await Task.Delay(TimeSpan.FromMilliseconds(18.288)); //60 fps
memoryStream.Seek(0);
writer.WriteUInt32((uint)memoryStream.Size);
writer.WriteBuffer(await memoryStream.ReadAsync(new byte[memoryStream.Size].AsBuffer(), (uint)memoryStream.Size, InputStreamOptions.None));
// Write the locally buffered data to the network.
try
{
await writer.StoreAsync();
}
catch (Exception exception)
{
// If this is an unknown status it means that the error if fatal and retry will likely fail.
if (SocketError.GetStatus(exception.HResult) == SocketErrorStatus.Unknown)
{
throw;
}
}
}
}
private async void OnConnection(StreamSocketListener sender, StreamSocketListenerConnectionReceivedEventArgs args)
{
await Task.WhenAll(DownloadVideos(args));
}
public async Task DownloadVideos(StreamSocketListenerConnectionReceivedEventArgs args)
{
DataReader reader = new DataReader(args.Socket.InputStream);
try
{
while (true)
{
// Read first 4 bytes (length of the subsequent string).
uint sizeFieldCount = await reader.LoadAsync(sizeof(uint));
if (sizeFieldCount != sizeof(uint))
{
// The underlying socket was closed before we were able to read the whole data.
return;
}
uint stringLength = reader.ReadUInt32();
uint actualStringLength = await reader.LoadAsync(stringLength);
if (stringLength != actualStringLength)
{
// The underlying socket was closed before we were able to read the whole data.
return;
}
NotifyUserFromAsyncThread(reader.ReadBuffer(actualStringLength));
}
}
catch (Exception exception)
{
// If this is an unknown status it means that the error is fatal and retry will likely fail.
if (SocketError.GetStatus(exception.HResult) == SocketErrorStatus.Unknown)
{
throw;
}
}
}
private void NotifyUserFromAsyncThread(IBuffer buffer)
{
var ignore = Dispatcher.RunAsync(
CoreDispatcherPriority.Normal,() =>
{
Stream stream = buffer.AsStream();
byte[] imageBytes = new byte[stream.Length];
stream.ReadAsync(imageBytes, 0, imageBytes.Length);
InMemoryRandomAccessStream ms = new InMemoryRandomAccessStream();
ms.AsStreamForWrite().Write(imageBytes, 0, imageBytes.Length);
ms.Seek(0);
var image = new BitmapImage();
image.SetSource(ms);
ImageSource src = image;
imageElement.Source = src;
});
}
Смежные вопросы
- 1. Объединить два изображения в окнах универсальных 8.1
- 2. Разработка универсальных приложений
- 3. SetDeviceGammaRamp использование api в универсальных окнах app
- 4. winappdeploycmd запуск универсальных приложений Windows
- 5. Как нарисовать дугу в универсальных окнах app
- 6. стиля заголовок Pivot в окнах универсальных 10
- 7. Adaptivness Webview в универсальных окнах 10 приложение
- 8. Подпись пользователя в универсальных окнах 8.1 приложение
- 9. Tweetinvi аутентификация в универсальных окнах 10 приложение
- 10. Тематические ресурсы для универсальных приложений
- 11. Как замаскировать две фигуры в окнах универсальных 10
- 12. Использование рассказчика в окнах приложений C#
- 13. Реклама в Windows 10 универсальных приложений
- 14. Призмы для универсальных приложений Windows Platform (UWP)
- 15. Сбой приложений в окнах 8.1
- 16. Как показать меню слева на изображении, щелкнув в окнах Универсальных приложений?
- 17. Потоковое изображение артефактов
- 18. C# конвертирование универсальных окон app в async
- 19. Resharper не работает с проектом универсальных приложений
- 20. Активы для генератора универсальных приложений Windows
- 21. iPhone/iPod & iPad - Ограничения относительно универсальных приложений
- 22. Индикатор общего проекта для универсальных приложений
- 23. Настройки сохранения и загрузки универсальных приложений
- 24. делегат с одним приложением для универсальных приложений
- 25. Xcode 6 - iOS8 Ограничения для универсальных приложений
- 26. Создание универсальных приложений для консолей (PS4/XBoxOne)
- 27. Распознавание речи для универсальных приложений Windows
- 28. оконный магазин 10 разработка универсальных приложений
- 29. Как получить список установленных универсальных приложений Windows?
- 30. Какие методы развертывания универсальных приложений Windows 10?