我正在尝试使用canon sdk(canon_edsdk-2.12)读取cr2图像。
我似乎正在正确加载dll,但是当我尝试获取实际图像时,我收到错误。
我尝试运行示例程序,看看它与我的不同,但同样的事情发生了。
尝试在网上查找问题,我找到了示例的实际源代码:http://read.pudn.com/downloads107/sourcecode/graph/texture_mapping/440409/RAWDevelop/RAWDevelopDlg.cpp__.htm
我的错误,在给定的来源上,位于void CRAWDevelopDlg::LoadImage()
函数 -
err = EdsGetImage( m_ImageRef , source , kEdsTargetImageType_RGB , rect , size , DstStreamRef );
if( err == EDS_ERR_OK ) {...}
else
{
AfxMessageBox("The error occurred with the EdsGetImage function.");
}
以上(在页面上的第481行)与我使用的方法相同,我得到相同的错误 - 错误代码为35(而不是0)。
错误似乎是
#define EDS_ERR_FILE_OPEN_ERROR 0x00000023L
那么...文件可能有问题吗?我试验了不同版本的文件,包括最新的相机......文件在Photoshop中打开......演示确实显示了标题信息,因为它给出了错误。所以它可以看到一些东西。
我错过了什么吗?
所有必需的dll都在系统路径上......
谢谢。
答案 0 :(得分:0)
旧的问题,仍然可以帮助某人:
要使用SDK打开原始文件,您需要调用这些函数(当然,您应该检查错误):
EdsStreamRef stream = NULL;
EdsImageRef imgRef = NULL;
EdsCreateFileStream("filename", kEdsFile_OpenExisting, kEdsAccess_Read, &stream);
EdsCreateImageRef(stream, &imgRef);
EdsRelease(stream);
然后您可以使用imgRef设置和获取属性。
要将图像保存为jpg / tiff / RGB图像,请使用EdsSaveImage函数。