我想从佳能相机(EOS 550D 和 EOS 1300D)捕捉 RAW 图像并将它们转换为 RGB,而不将它们保存在磁盘上。我假设这应该是可能的,因为 EdsCreateImageRef 接受 StreamRef,它可以是 FileStream 或 MemoryStream。但是,每当我使用 MemoryStream 而不是 FileStream 时,EdsGetImageRef 将返回 EDS_ERR_FILE_FORMAT_UNRECOGNIZED。我尝试了几种变体:
- 下载到 MemoryStream 并直接在此调用 EdsGetImageRef
- 与上面相同,在两者之间寻找流的开头
- 下载到 MemoryStream 中,将数据提取到我自己的数据缓冲区中并用这些数据填充新的 MemoryStream
- 手动从磁盘加载数据(从已知有效的 CR2 文件)并用它填充 MemoryStream
唯一可行的是将数据转储到磁盘,然后使用 EdsCreateFileStream 打开此文件并将其传递给 EdsGetImageRef。有没有人能够为 MemoryStream 创建 ImageRef,如果是这样,您能否指出需要做什么才能成功?