在佳能 SDK 示例中,如何拍摄具有特定分辨率(例如 200-300 dpi)的照片或以编程方式更改分辨率,并将拍摄的照片保存为另一种文件类型,这里我需要保存为 .TIF 格式?我找不到任何功能来做到这一点。
问问题
758 次
2 回答
1
这篇文章的作者在这里。您可以通过使用枚举PropID_ImageQuality
之一设置来更改图像分辨率。ImageQuality
请注意,并非每个相机都支持每个枚举值,实际图像分辨率取决于相机和传感器。如果您需要像素精确的图像,则必须自己调整大小。
此外,您从相机下载的图像不会被 SDK 修改,因此您只能获取相机具有的图像格式,通常是 CR2 和/或 Jpg。
要从原始文件中获取 tif,您可以使用 SDK 图像方法。要创建原始图像,请使用该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);
于 2016-01-30T18:18:35.517 回答
0
要获取 TIFF 图像,请以 RAW 格式拍摄,下载图像后使用设置为的EdsSaveImage
功能。DPI 分辨率不直接相关,但您始终可以使用Exiftool等工具明确设置 DPI。EdsTargetImageType
kEdsTargetImageType_TIFF
于 2016-01-30T18:15:02.307 回答