[UWP]如何在UWP的irandomaccessstream中添加文本?

编程入门 行业动态 更新时间:2024-10-15 22:22:26
本文介绍了[UWP]如何在UWP的irandomaccessstream中添加文本?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

这是我的功能记录ip camera。如何在我拥有的每个图像(_frameBuffer)中插入时间。当我完成记录后,我会收到一个视频,其中包含我添加到每张图片中的图片和时间。

public async void Record(byte[] _frameBuffer) { using (IRandomAccessStream stream = new InMemoryRandomAccessStream()) { await stream.WriteAsync(_frameBuffer.AsBuffer()); stream.Seek(0); var decoder = await BitmapDecoder.CreateAsync(stream); PixelDataProvider dataProvider = await decoder.GetPixelDataAsync( BitmapPixelFormat.Bgra8, BitmapAlphaMode.Straight, new BitmapTransform { ScaledWidth = this.PixelWidth, ScaledHeight = this.PixelHeight }, ExifOrientationMode.RespectExifOrientation, ColorManagementMode.ColorManageToSRgb); if (this.PictureWriter != null) PictureWriter?.AddFrame(dataProvider.DetachPixelData(), (int)this.PixelWidth, (int)this.PixelHeight); stream.Dispose(); } }

我非常感谢所有人的帮助 我尝试过: 我找到了一个可以将文本插入图像的解决方案。但在我的情况下,我还没有找到解决方法。

private async void Button_Click(object sender, RoutedEventArgs e) { var picker = new FileOpenPicker(); picker.FileTypeFilter.Add(".png"); picker.FileTypeFilter.Add(".jpg"); picker.FileTypeFilter.Add(".jpeg"); var sourceFile = await picker.PickSingleFileAsync(); if (sourceFile == null) { return; } var device = CanvasDevice.GetSharedDevice(); var image = default(CanvasBitmap); using (var s = await sourceFile.OpenReadAsync()) { image = await CanvasBitmap.LoadAsync(device, s); } var offscreen = new CanvasRenderTarget( device, (float)image.Bounds.Width, (float)image.Bounds.Height, 96); using (var ds = offscreen.CreateDrawingSession()) { ds.DrawImage(image, 0, 0); ds.DrawText("Hello world", 10, 10, Colors.Blue); } var displayInformation = DisplayInformation.GetForCurrentView(); var savepicker = new FileSavePicker(); savepicker.FileTypeChoices.Add("png", new List<string> { ".png" }); var destFile = await savepicker.PickSaveFileAsync(); using (var s = await destFile.OpenAsync(FileAccessMode.ReadWrite)) { var encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.PngEncoderId, s); encoder.SetPixelData( BitmapPixelFormat.Bgra8, BitmapAlphaMode.Ignore, (uint)offscreen.Size.Width, (uint)offscreen.Size.Height, displayInformation.LogicalDpi, displayInformation.LogicalDpi, offscreen.GetPixelBytes()); await encoder.FlushAsync(); } }

推荐答案

这是我的功能记录ip camera。如何在我拥有的每个图像(_frameBuffer)中插入时间。当我完成记录时,我得到一个包含图像的视频和我添加到每个图像的时间。 public async void Record(byte[] _frameBuffer) { using (IRandomAccessStream stream = new InMemoryRandomAccessStream()) { await stream.WriteAsync(_frameBuffer.AsBuffer()); stream.Seek(0); var decoder = await BitmapDecoder.CreateAsync(stream); PixelDataProvider dataProvider = await decoder.GetPixelDataAsync( BitmapPixelFormat.Bgra8, BitmapAlphaMode.Straight, new BitmapTransform { ScaledWidth = this.PixelWidth, ScaledHeight = this.PixelHeight }, ExifOrientationMode.RespectExifOrientation, ColorManagementMode.ColorManageToSRgb); if (this.PictureWriter != null) PictureWriter?.AddFrame(dataProvider.DetachPixelData(), (int)this.PixelWidth, (int)this.PixelHeight); stream.Dispose(); } }

我非常感谢所有人的帮助 我试过的: 我找到了一个可以解决的问题将文本插入图像。但就我而言,我还没有办法解决它。

private async void Button_Click(object sender, RoutedEventArgs e) { var picker = new FileOpenPicker(); picker.FileTypeFilter.Add(".png"); picker.FileTypeFilter.Add(".jpg"); picker.FileTypeFilter.Add(".jpeg"); var sourceFile = await picker.PickSingleFileAsync(); if (sourceFile == null) { return; } var device = CanvasDevice.GetSharedDevice(); var image = default(CanvasBitmap); using (var s = await sourceFile.OpenReadAsync()) { image = await CanvasBitmap.LoadAsync(device, s); } var offscreen = new CanvasRenderTarget( device, (float)image.Bounds.Width, (float)image.Bounds.Height, 96); using (var ds = offscreen.CreateDrawingSession()) { ds.DrawImage(image, 0, 0); ds.DrawText("Hello world", 10, 10, Colors.Blue); } var displayInformation = DisplayInformation.GetForCurrentView(); var savepicker = new FileSavePicker(); savepicker.FileTypeChoices.Add("png", new List<string> { ".png" }); var destFile = await savepicker.PickSaveFileAsync(); using (var s = await destFile.OpenAsync(FileAccessMode.ReadWrite)) { var encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.PngEncoderId, s); encoder.SetPixelData( BitmapPixelFormat.Bgra8, BitmapAlphaMode.Ignore, (uint)offscreen.Size.Width, (uint)offscreen.Size.Height, displayInformation.LogicalDpi, displayInformation.LogicalDpi, offscreen.GetPixelBytes()); await encoder.FlushAsync(); } }

更多推荐

[UWP]如何在UWP的irandomaccessstream中添加文本?

本文发布于:2023-11-04 18:19:07,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1558672.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:文本   如何在   UWP   irandomaccessstream

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!