如何将字节数组YUY2格式转换为BitmapSource

本文关键字:格式 转换 BitmapSource YUY2 数组 字节 字节数 | 更新日期: 2023-09-27 17:52:56

我有一个图像字节数组(在代码中名为colorByteArray), YUY2格式,我试图将其传输到JPEG编码。

到目前为止,我正在使用字节数组RGBA格式,这里是他的代码:

        BitmapSource bitmapSource = BitmapSource.Create(
            width,
            height,
            96,
            96,
            PixelFormats.Pbgra32,
            null,
            colorByteArray,
            MainWindow.COLOR_BYTE_PER_PIXEL * width);
        //JPEG encoder
        JpegBitmapEncoder encoder = new JpegBitmapEncoder();
        encoder.QualityLevel = MainWindow.JPEG_QUALITY;
        // create frame from the writable bitmap and add to encoder
        BitmapFrame bmf = BitmapFrame.Create(bitmapSource);
        double scaleRatio = Math.Sqrt(MainWindow.COLOR_SCALING);
        ScaleTransform scale = new ScaleTransform(scaleRatio, scaleRatio);
        TransformedBitmap scaledBmf = new TransformedBitmap(bmf, scale);
        encoder.Frames.Add(BitmapFrame.Create(scaledBmf));
        MemoryStream msColor = new MemoryStream();
        encoder.Save(msColor)

我如何将代码转换为与YUY一起工作?我没有找到创建BitmapSource的方法。

感谢您的建议

如何将字节数组YUY2格式转换为BitmapSource

为您节省一些麻烦,使用。net的ImageMagik工具包而不是原始的GDI代码,它可以为您处理所有这些东西,我最近写了一篇关于它的文章,您可以在这里找到:

http://www.codeguru.com/columns/dotnet/manipulating-images-with-imagemagik.html

ImageMagik作为一个工具包已经存在多年了,在图像方面没有什么是它不能做的。

有一段时间你必须使用c#进程程序集,并直接调用命令工具,但由于你现在可以使用NuGet来拉入预制的二进制库并开始对它们进行编码,你可以在一小组DLL中获得所有的功能

我在我的博客文章中展示的项目代码plex页面有很多易于理解的示例,涵盖了工具包的各个方面,任何未涵盖的内容都可以从Visual Studio中的智能感知中拾取。