0

我正在尝试使用 Canon SDK 添加到现有网站,并且它的调整大小选项。我已将 EDSDK.cs 添加到我的 App_Code 文件夹,并将这些 dll 添加到我的 Bin 目录:EdsImage.dll、EDSDK.dll、MLib.dll、Ucs32P.dll、DPPDLL.dll、DPPLibCom.dll 和 DPPRSC.dll。我的代码只是试图将图像转换为 JPG 文件:

uint err;
        err = EDSDK.EdsInitializeSDK();
        IntPtr inStream;
        err = EDSDK.EdsCreateFileStream("img_001.CR2", EDSDK.EdsFileCreateDisposition.OpenExisting, EDSDK.EdsAccess.Read, out inStream);
        IntPtr imgRef;
        err = EDSDK.EdsCreateImageRef(inStream, out imgRef);
        err = EDSDK.EdsSetPropertyData(imgRef, EDSDK.PropID_WhiteBalance, 0, 4, EDSDK.WhiteBalance_Cloudy);
        IntPtr outStream;
        err = EDSDK.EdsCreateFileStream("img_001.jpg", EDSDK.EdsFileCreateDisposition.CreateAlways, EDSDK.EdsAccess.Write, out outStream);
        EDSDK.EdsImageInfo info;
        err = EDSDK.EdsGetImageInfo(imgRef, EDSDK.EdsImageSource.FullView, out info);
        EDSDK.EdsSaveImageSetting set = new EDSDK.EdsSaveImageSetting();
        set.JPEGQuality = 9;
        err = EDSDK.EdsSaveImage(imgRef, EDSDK.EdsTargetImageType.Jpeg, set, outStream);
        EDSDK.EdsRelease(imgRef);
        EDSDK.EdsRelease(inStream);
        EDSDK.EdsRelease(outStream);
        EDSDK.EdsTerminateSDK();

任何帮助将不胜感激。谢谢!!

4

1 回答 1

0

我找到了解决这个问题的方法,我想分享一下,以防有人遇到同样的问题。我在这里下载了一个 .exe 文件http://www.centrostudiprogressofotografico.it/en/dcraw/并将其作为网站中的一个进程运行以将 .cr2 转换为 jpg。这是代码:

string dcRawExe = HttpContext.Current.Server.MapPath("PATH TO:/dcraw-9.26-ms-64-bit.exe");
string strCR2File = "PATH TO CR2 FILE";
string strJPGFile = "PATH TO JPG FILE";
var startInfo = new ProcessStartInfo(dcRawExe)
{
    Arguments = "-c -e \"" + strCR2File + "\"",
    RedirectStandardOutput = true,
    UseShellExecute = false
};
var process = System.Diagnostics.Process.Start(startInfo);
var image = System.Drawing.Image.FromStream(process.StandardOutput.BaseStream);
image.Save(strJPGFile, System.Drawing.Imaging.ImageFormat.Jpeg);
于 2015-08-27T12:54:45.633 回答