2013-06-11 58 views
2

我想在c#或VB.NET程序中使用canon EDSDK來查看cr2文件。佳能SDK圖像處理示例

我已經找到了如何控制照相機樣本代碼 - 例如:

https://github.com/esskar/Canon.Eos.Framework

,但無需打開文件,提取圖像數據並顯示它 - 或保存拇指或全尺寸圖像作爲一個JPG ...

有人可以指示我一些這樣的例子嗎?謝謝。

注 - 我有EDSDK 2.12,我希望舊版本也可以幫助。

編輯:感謝您的建議,它指向一個C庫,可能會有所幫助...雖然我不知道如何,不知道如何我可以在網絡中使用它。

+0

可能重複(http://stackoverflow.com/questions/4111939/loading -canon-CR文件,在網) – Jason

回答

3

我知道這已經有一段時間了,因爲這個問題已經被問到了,但它仍然可以幫助某人。 要處理佳能RAW文件與你必須做這個SDK:

uint err; 
//Create input stream 
IntPtr inStream; 
err = EDSDK.EdsCreateFileStream("Test.CR2", EDSDK.EdsFileCreateDisposition.OpenExisting, EDSDK.EdsAccess.Read, out inStream); 
//Create image reference 
IntPtr imgRef; 
err = EDSDK.EdsCreateImageRef(inStream, out imgRef); 

//Set properties 
err = EDSDK.EdsSetPropertyData(imgRef, EDSDK.PropID_WhiteBalance, 0, 4, EDSDK.WhiteBalance_Cloudy); 
//TODO: set any imageRef compatible property you need here. 

//Create output stream 
IntPtr outStream; 
err = EDSDK.EdsCreateFileStream("TestOut.jpg", EDSDK.EdsFileCreateDisposition.CreateAlways, EDSDK.EdsAccess.Write, out outStream); 
//Get image info 
EDSDK.EdsImageInfo info; 
err = EDSDK.EdsGetImageInfo(imgRef, EDSDK.EdsImageSource.FullView, out info); 
//Set image settings 
EDSDK.EdsSaveImageSetting set = new EDSDK.EdsSaveImageSetting(); 
set.JPEGQuality = 9; 
//Save image 
err = EDSDK.EdsSaveImage(imgRef, EDSDK.EdsTargetImageType.Jpeg, set, outStream); 

//Release data 
EDSDK.EdsRelease(imgRef); 
EDSDK.EdsRelease(inStream); 
EDSDK.EdsRelease(outStream); 

當然你不必來讀取高清文件,但也可以使用你的相機有一個形象的參考。

在沒有SDK的情況下獲取預覽圖像的另一種方法是讀出CR2本身。它基本上只是一個Tiff文件,它存儲了一個jpg縮略圖(160x120)和兩個更大的RGB圖像。該網站在這裏提供了對整個CR2格式一些有用的信息:http://lclevy.free.fr/cr2/

親切的問候的[在.NET中加載佳能.CR2文件]