USB相机的文件路径

| 您好,我正在使用GDI +进行一些图像处理。我有两个参数从命令行运行。原因是从VBA Excel 2007调用了该程序。从VBA运行打开文件对话框,并提供第一个参数。 第一个争论是要处理的原始图像,第二个争论是将图像保存在何处。当两个参数来自带字母的驱动器(即C :)时,一切工作正常。 它不适用于网络文件夹,即\\ server \\ folder。我通过在尝试加载图像之前将文件夹安装到驱动器号来解决了这个问题。 现在,当传入的图像在USB摄像机上时,我有一个问题。相机上文件的文件路径最终为COMPUTER \\ Canon \\ DCIM \\ image.jpg。 Windows没有将相机安装在字母驱动器上,因此对我而言它无法正常工作。 在尝试加载图像之前,我添加了额外的\'\\\',以使它们都是\\的两倍。 我完全不确定如何使它正常工作,并四处查看。谢谢。
int main(int argc, char* argv[])
{
GdiplusStartupInput gdiplusStartupInput;
ULONG_PTR           gdiplusToken;

// INITIALIZE GDI+
GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);

wchar_t tin[200] = L\"\";
wchar_t in[200] = L\"\";
wchar_t out[200] = L\"\";
wchar_t tout[200] = L\"\";

NETRESOURCE nr;
DWORD dwRetVal;

nr.dwType = RESOURCETYPE_DISK;
nr.lpLocalName = \"M:\";
nr.lpRemoteName = \"\\\\\\\\server\\\\folder\";
nr.lpProvider = NULL;
// Map the mugshots folder
dwRetVal = WNetAddConnection2(&nr, NULL, NULL, CONNECT_TEMPORARY);

// Convert to a wchar_t* from command line argument
size_t origsize = strlen(argv[1]) + 1;
mbstowcs( tin, argv[1], origsize);

//Add an extra \\ for directory
int j = 0;
for (int i = 0 ; i < int(origsize) ; i++)
{
    if(tin[i] == \'\\\\\')
    {
        in[j] = \'\\\\\';
        j++;
        in[j] = \'\\\\\';
        j++;
    }
    else
    {
        in[j] = tin[i];
        j++;
    }
}

// Convert to a wchar_t* from command line argument
origsize = strlen(argv[2]) + 1;
mbstowcs(tout, argv[2], origsize);
//Add an extra \\ for directory

out[0] = \'M\';
out[1] = \':\';
out[2] = \'\\\\\';
out[3] = \'\\\\\';
j = 4;
for (int i = 0 ; i < int(origsize) ; i++)
{
    if(tout[i] == \'\\\\\')
    {
        out[j] = \'\\\\\';
        j++;
        out[j] = \'\\\\\';
        j++;
    }
    else
    {
        out[j] = tout[i];
        j++;
    }
}

Bitmap b(in);

Process image

CLSID pngClsid;
GetEncoderClsid(L\"image/jpeg\", &pngClsid);
image2->Save(out, &pngClsid, NULL);

return 0;
}
    
已邀请:
        请看一下示例:GetImage示例:演示Windows Image Acquisition API:   该示例应用程序在其“文件”菜单上有一个命令,名为   从扫描仪或照相机。当WIA设备(或设备仿真器)处于   连接后,菜单项变为启用状态。当用户选择   菜单命令,示例将顺序显示WIA设备   选择对话框,图像选择对话框和图像传输   对话框。设备和图像选择对话框是常见的   系统提供的对话框,并且传输对话框是   在此示例中实现。最后,样本将显示   在子窗口中传输的图像。 希望这可以帮助。     
        您需要研究shell如何处理特殊路径,这里是一个好的开始: http://msdn.microsoft.com/zh-cn/library/bb773559%28v=vs.85%29.aspx 对于您正在做的很多事情,您应该使用PathCanonicalize()或类似的方法。 不确定这是否对您的相机有帮助,您可能需要直接访问图像采集API才能从某些相机中获取文件。     

要回复问题请先登录注册