こんにちは私はGDI +を使用して画像処理を行っています。私はそれを2つの引数でコマンドラインから実行させています。この理由は、プログラムがVBA Excel 2007から呼び出されているためです。開いているファイルダイアログはVBAから実行され、最初の引数が与えられます。usbカメラからのファイルパス
最初の引数は処理される元の画像であり、2番目の引数は画像を保存する場所です。 2つの引数がドライブ文字(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;
}
ここであなたが持っているのは、シェル名前空間にWIAデバイスが表示されていると思います。私。ファイルパスはありません。 WIAを使用して画像を取得できるはずです。ドキュメントはhttp://msdn.microsoft.com/en-us/library/windows/desktop/ms630368(v=vs.85).aspxを参照してください。 – Ben