我想从佳能相机(EOS 550D和EOS 1300D)中捕获RAW图像并将其转换为RGB而不将其保存在磁盘上。鉴于EdsCreateImageRef接受StreamRef(可以是FileStream或MemoryStream),我假设这应该是可能的。但是,每当我使用MemoryStream而不是FileStream时,EdsGetImageRef将返回EDS_ERR_FILE_FORMAT_UNRECOGNIZED。我尝试了几种变体:
唯一有效的方法是将数据转储到磁盘,然后使用EdsCreateFileStream打开此文件并将其传递给EdsGetImageRef。有没有人能够为MemoryStream创建一个ImageRef,如果有的话,你能指出一下为了成功需要做些什么吗?
答案 0 :(得分:0)
我想这与Canon Digital SDK (EDSDK) EdsCreateImageRef error
一样我刚刚开始使用EDSDK v 3.8.0。我遇到了同样的问题,但是我能够找出导致它的原因:1.x版本在工作路径中搜索dll,而2.x和3.x使用dll在exe的位置搜索。因此,将文件复制到Visual Studio项目的debug和release目录中即可解决此问题。
答案 1 :(得分:-1)
我有同样的问题。
EDSDK.EdsCreateImageRef返回EDS_ERR_FILE_FORMAT_UNRECOGNIZED
我找到了解决方法。
在我的项目EDSDK.dll中,它位于文件EDSDK \ Dll中。 DllImport看起来像[DllImport(“ EDSDK \ Dll \ EDSDK.dll”)]
它适用于JPEG文件,但不适用于CR2。
然后,我将EDSDK \ Dll中的所有dll放入根项目文件夹并更改DllImport。
对我有用。
然后我在EDSDK手册中发现了非常有用的文字
1.4.3执行EDSDK客户端应用程序 视窗: 为了执行EDSDK客户端应用程序,需要所有DLL。 DLL文件夹中的所有模块都必须复制到EDSDK客户端应用程序所在的文件夹中。
需要帮助