canon SDk文章由Johannes Bildstein撰写

时间:2016-01-30 09:36:29

标签: c# edsdk canon-sdk

在Canon SDK示例中,如何以200-300 dpi的特定分辨率拍摄照片或以编程方式更改分辨率,并将拍摄的照片保存为其他文件类型,此处我需要以.TIF格式保存?我找不到任何功能。

2 个答案:

答案 0 :(得分:1)

这篇文章的作者。 您可以使用PropID_ImageQuality枚举之一设置ImageQuality来更改图像分辨率。请注意,并非每个摄像头都支持每个枚举值,实际图像分辨率取决于摄像头和传感器。如果您需要像素精确图像,则必须自己调整大小。

此外,SDK不会修改您从相机下载的图像,因此您只能获得相机所具有的图像格式,通常是CR2和/或Jpg。

要从原始文件获取tif,您可以使用SDKs图像方法。要创建原始图像,请使用EdsCreateImageRef方法并使用EdsSaveImage方法进行保存。作为目标,您可以使用EdsTargetImageType.TIFF(或TIFF16每个频道16位。)

编辑:

将图像保存到tiff(未测试)的快速示例:

IntPtr imgRef;
//Open image
IntPtr inStream;
EDSDK.EdsCreateFileStream("inFile.cr2", EdsFileCreateDisposition.OpenExisting, FileAccess.Read, out inStream);
EDSDK.EdsCreateImageRef(inStream, out imgRef);
EDSDK.EdsRelease(inStream);

//do whatever you like with imgRef now

//Save image
IntPtr outStream;
var settings = new EdsSaveImageSetting();
EDSDK.EdsCreateFileStream("outFile.tif", EdsFileCreateDisposition.CreateAlways, EdsFileAccess.Write, out outStream);
EDSDK.EdsSaveImage(imgRef, EdsTargetImageType.TIFF, settings, outStream);
EDSDK.EdsRelease(outStream);

答案 1 :(得分:0)

要获取TIFF图像,请以RAW格式拍摄,并在下载图像后使用EdsSaveImage功能,并将EdsTargetImageType设置为kEdsTargetImageType_TIFF。 DPI分辨率与此无直接关系,但您始终可以使用Exiftool等工具明确设置DPI。