首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于图像处理的Canon SDK示例

用于图像处理的Canon SDK示例
EN

Stack Overflow用户
提问于 2013-06-12 04:38:29
回答 1查看 3.9K关注 0票数 2

我想在c#或VB.NET程序中使用canon EDSDK来查看cr2文件。

我找到了如何控制摄像头的示例代码-示例:

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

但没有提到打开文件,提取图像数据并显示它-或者将拇指或全尺寸图像保存为jpg……

有人能告诉我一些这样的例子吗?谢谢。

注意-我有EDSDK 2.12,我希望旧版本也能有所帮助。

编辑:谢谢你的建议,它指向了一个可能会有帮助的C库。虽然我不知道如何使用它,但我不确定如何在.net中使用它。

EN

回答 1

Stack Overflow用户

发布于 2014-04-10 22:10:42

我知道这个问题提出已经有一段时间了,但它可能会对某些人有所帮助。要使用SDK处理canon原始文件,您必须执行以下操作:

代码语言:javascript
复制
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/

亲切的问候

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17053354

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档