毫无疑问,这是不可能的,但我想看看是否有人有一个巧妙的建议.我们有一个第三方程序集,它可以使用内部方法'SaveToFile'将存储在定制数据库内部的图像输出到文件,例如:
3rdParty.Scripting.ImageManager man = new 3rdParty.Scripting.ImageManager("ref");
3rdParty.Scripting.Image itemImg = man.GetImage(orderNumber);
itemImg.SaveToFile("c:\file.jpg")
Run Code Online (Sandbox Code Playgroud)
ItemImg.SaveToFile没有返回类型,只是在内部创建一个位图并将其写入文件流.我们绝对无法访问已编译的方法.
我需要做的是以某种方式拦截文件流并读取位图,我知道这可能是不可能的,但我不是绝对的专家,所以想看看是否有一种神奇的方法来做到这一点.
如果所有其他方法都失败了我将保存文件然后读回来,我只是想避免保存到磁盘,我可以直接获取数据并最终将其转换为base64字符串值.
不幸的是,除非第三方库提供了SaveToStream一种可以从外部提供流的方法,否则无法实现您的目标.您必须将内容保存到临时文件,然后再读回内容.
这就是为什么在设计库时提供将Streams作为I/O参数的方法通常是最佳实践,因为这将使消费者能够控制是否要将其保存到文件,内存或网络流.