使用BitmapEncoder将图像byte []数组编码为InMemoryRandomAccessStream时,C#UWP处理内存不断增加

时间:2019-01-09 17:26:19

标签: c# .net memory-leaks uwp bitmapencoder

下面我的代码的这一部分会导致进程内存(由诊断工具显示)每10秒增加20MB以上。

如果我将其注释掉,则进程内存不会增加。

代码将byte []数组prebuffer_to_IOS中的图像编码为InMemoryRandomAccessStream encoding_output_stream。

代码中是否有错误,或者这是垃圾回收问题?

using (InMemoryRandomAccessStream encoded_output_stream = new InMemoryRandomAccessStream())
{
    encoded_output_stream.Seek(0);

    // Convert 
    // Init BitmapEncoder for output stream and PNG encoding method:
    BitmapEncoder PNG_image_encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.PngEncoderId, encoded_output_stream);

    PNG_image_encoder.SetSoftwareBitmap( latest_frame_SoftwareBitmap );

    PNG_image_encoder.SetPixelData(
            BitmapPixelFormat.Bgra8,
            BitmapAlphaMode.Ignore,
            (uint)latest_frame_SoftwareBitmap.PixelWidth,
            (uint)latest_frame_SoftwareBitmap.PixelHeight,
            dpiX: 96,
            dpiY: 96,
            pixels: Frames_To_iPad.prebuffer_to_IOS ); // INPUT TO ENCODE IS: prebuffer_to_IOS

    await PNG_image_encoder.FlushAsync();

    // Convert encoded stream to byte array for upload:
    uint compressed_frame_size_bytes = (uint)encoded_output_stream.Size;
}

0 个答案:

没有答案