2013-06-20 34 views
1

我想用canon sdk(canon_edsdk-2.12)讀取cr2圖像。用edsdk加載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使用的是系統路徑...

謝謝。

+1

35十進制是0x23而不是0x21。如果確實是35,你會得到EDS_ERR_FILE_OPEN_ERROR = 0x23L; – user2246051

+0

對......我有多愚蠢。謝謝。我嘗試過的文件應該是有效的文件,但我可以用Photoshop打開它們...我嘗試了用不同相機拍攝的cr2文件。 (將更新帖子) – Thalia

回答

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函數。