2016-01-30 19 views
0

在佳能SDK示例,我怎麼能採取某些分辨率的照片,如200-300 dpi或編程方式更改分辨率,並保存拍攝的照片中的其他文件類型,在這裏我需要保存.TIF格式?我找不到任何功能來做到這一點。佳能SDK文章約翰內斯·比爾斯泰因

回答

0

要獲得TIFF圖像,請以RAW格式拍攝,下載圖像後使用EdsSaveImage功能,EdsTargetImageType設置爲kEdsTargetImageType_TIFF。 DPI分辨率與直接不相關,但您始終可以使用諸如Exiftool之類的工具來明確設置DPI。這裏的文章

1

作者。 你可以通過與ImageQuality枚舉的一個設置PropID_ImageQuality改變圖像分辨率。請注意,並非所有相機都支持每個枚舉值,實際圖像分辨率取決於相機和傳感器。如果你需要像素精確的圖像,你必須自己調整大小。

此外,從相機下載圖像不被修改的SDK,所以你只能得到該相機具有通常CR2和/或JPG圖像格式。

從原始文件,您可以使用SDK的圖像方法得到TIF。要創建原始圖像,請使用EdsCreateImageRef方法並使用EdsSaveImage方法保存。作爲一個目標,你可以使用EdsTargetImageType.TIFF(或每個通道16bit的TIFF16)。

編輯:

保存爲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); 
+0

@Shapoor,請出示你已經做了什麼錯誤你了。我可以更好地幫助你。 –

+0

@Shapoor,所有這些東西都在EDSDK類中定義。該屬性的設置與CameraHandler中SetSetting方法的任何其他屬性一樣(請參閱文章中的示例)。請參閱編輯以獲取tiff保存的快速示例。 –

+0

我們是在指你真棒公用事業[這裏](https://www.codeproject.com/Articles/688276/Canon-EDSDK-Tutorial-in-Csharp)我們的目的是捕捉到的圖像保存爲.TIF,在樣本應用程序,點擊TakePhoto後,它應該將圖像保存爲計算機上的.TIF。在DownloadToFile函數中,我們使用了上面的代碼,其中「input.cr2」文件是從相機的RAW設置中捕獲的。您能否告訴我們上述代碼的確切用法,即正確的地方添加此代碼和確切的參數值? - 再次感謝你。 – Banng