从字节数组创建 VSTO 形状

Create a VSTO shape from byte array

我有一个以字节数组编码的图像,我想将它作为一个形状添加到 excel 文档中,但不幸的是,我看到的唯一可用的函数需要我保存图像到驱动器,然后读取它。如您所见,这是一个非常慢的操作,我只想从字节流中读取图像并将其解码为位图。

我是这样编码的:

                    JpegBitmapEncoder encoder = new JpegBitmapEncoder();
                    encoder.Frames.Add(BitmapFrame.Create(rtb));
                    encoder.QualityLevel = 100;
                    byte[] bit = null;
                    using (var ms = new MemoryStream())
                    {
                        encoder.Frames.Add(BitmapFrame.Create(rtb));
                        encoder.Save(ms);
                        bit = ms.ToArray();
                    }

现在,如何将它添加到工作表中? 方法 Shapes.AddPicture 只接受文件名,不能从流中读取。

Excel 对象模型不提供任何读取字节数组然后将其添加为形状的方法。因此,唯一可能的解决方案是将字节数组保存为磁盘上的文件,然后将其添加为您之前所述的形状:

to save the image to the drive and then read it.