【问题标题】:Create a BitmapImage from ushort[]从 ushort[] 创建一个 BitmapImage
【发布时间】:2011-03-21 18:23:10
【问题描述】:

是否可以从 ushort 数组创建 BitmapImage?如果是的话怎么办?

此刻我正在创建一个位图,将其转换为位图数组并显示它,但这太慢了,我需要不断更新图像(实时视频源),同时创建每一帧 UI studders,这使我的应用程序在视频运行时变得非常慢。所以我需要尽快将我的 ushort[] 转换为 BitmapImage

谢谢, 埃蒙

【问题讨论】:

  • 图像数据,0-65000,代表灰度图像
  • 伙计,这是您提问时应该在您的问题中提供的信息!记住这一点,以便您的下一个问题

标签: c# wpf bitmap bitmapimage imagesource


【解决方案1】:

here您有一个如何通过 MemoryStream 获取 BitmapImage 的示例,这可能会对您有所帮助

您可以使用BitConverter 将 ushorts 转换为字节以输入到 MemoryStream 中

【讨论】:

    【解决方案2】:

    假设您正在使用介于 0255 之间的值,您可以将其转换为字节数组,然后将其加载到 MemoryStream

    // Please note that with values higher than 255 the program will throw an exception
    checked
    {
        ushort[] values = { 200, 100, 30/*, 256*/ };
        var bytes = (from value in values
                     select (byte)value).ToArray();
    
        // Taken from: http://stackoverflow.com/questions/5346727/wpf-convert-memory-stream-to-bitmapimage
        using (var stream = new MemoryStream(data))
        {
            var bitmap = new BitmapImage();
            bitmap.BeginInit();
            bitmap.StreamSource = stream;
            bitmap.CacheOption = BitmapCacheOption.OnLoad;
            bitmap.EndInit();
            bitmap.Freeze();
        }
    }
    

    【讨论】:

    • 数据是 0 - 65000 但我会尝试缩小它,看看这个方法是否比我现在的更快
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多