嗨我需要有关如何从C#UWP中的SoftwareBitmap获取字节数组的帮助,以便我可以通过TCP套接字发送它.
我还可以访问“VideoFrame previewFrame”对象,这是我从中获取SoftwareBitmap的地方.
我在网上看过类似下面的内容,但是UWP不支持wb.SaveJpeg(…).除非我错过了什么?
MemoryStream ms = new MemoryStream(); WriteableBitmap wb = new WriteableBitmap(myimage); wb.SaveJpeg(ms,myimage.PixelWidth,myimage.PixelHeight,100); byte [] imageBytes = ms.ToArray();
任何帮助,或正确方向的指示,将不胜感激.
谢谢,安迪
解决方法
到目前为止我知道你不能这样做.但您可以使用SoftwareBitmap.看看例子:
https://msdn.microsoft.com/en-us/library/windows/apps/mt244351.aspx(SoftwareBitmap是SoftwareBitmapSource的私有字段..只是通过反思读取它…也许这是完全错误的建议)
private async void SaveSoftwareBitmapToFile(SoftwareBitmap softwareBitmap,StorageFile outputFile) { using (IRandomAccessstream stream = await outputFile.OpenAsync(FileAccessMode.ReadWrite)) { // Create an encoder with the desired format BitmapEncoder encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.JpegEncoderId,stream); // Set the software bitmap encoder.SetSoftwareBitmap(softwareBitmap); // Set additional encoding parameters,if needed encoder.BitmapTransform.ScaledWidth = 320; encoder.BitmapTransform.ScaledHeight = 240; encoder.BitmapTransform.Rotation = Windows.Graphics.Imaging.BitmapRotation.Clockwise90degrees; encoder.BitmapTransform.InterpolationMode = BitmapInterpolationMode.Fant; encoder.IsThumbnailGenerated = true; try { await encoder.FlushAsync(); } catch (Exception err) { switch (err.HResult) { case unchecked((int)0x88982F81): //WINCODEC_ERR_UNSUPPORTEDOPERATION // If the encoder does not support writing a thumbnail,then try again // but disable thumbnail generation. encoder.IsThumbnailGenerated = false; break; default: throw; } } if (encoder.IsThumbnailGenerated == false) { await encoder.FlushAsync(); } } }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。