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