2

画像を保存するプログラムがありますが、デバッグすると次のエラーが発生します。

指定されたパスの形式はサポートされていません。

サポートされていない理由と、この問題を解決する方法を知りたいです。前もって感謝します

マイコード

BitmapSource image = BitmapSource.Create(colorFrame.Width, colorFrame.Height, 
                     96, 96, PixelFormats.Bgr32, null, pixels, stride);

ImageFormat format = ImageFormat.Jpeg;

string file_name = "C:\\Kinected\\Images\\Kinect" + bb1 + ".jpg";

image.Save(file_name, format);

編集

コードを追加しましたが、正しくコンパイルされますが、ファイルが保存されません。コードは次のとおりです。

string mypath = System.IO.Path.Combine(@"C:\", "Kinected", "Images");
if (!Directory.Exists(mypath))
  {
       Directory.CreateDirectory(mypath);
       file_name = System.IO.Path.Combine(mypath, "Kinect 1" + bb1 + ".jpeg");
  }

if (file_name == null)
 {
       return;
 }

if (!Directory.Exists(file_name))
 {
        Directory.CreateDirectory(file_name);
 }

編集

以下のコードをすべて追加しましたが、それでもThe given path's format is not supported.エラーが発生します。再度、感謝します。

BitmapSource image = BitmapSource.Create(
                colorFrame.Width, colorFrame.Height, 96, 96, PixelFormats.Bgr32, null, pixels, stride);

            totalFrames = colorFrame.FrameNumber;
            ImageFormat format = ImageFormat.Jpeg;                

            if (PersonDetected == true)
            {
                if (!Directory.Exists(mypath))
                {
                    Directory.CreateDirectory(mypath);
                    file_name = "C:\\Kinected\\Images\\Kinect 1 " + bb1 + ".jpeg";
                }
                if (file_name == null || mypath == null || image == null)
                {
                    if (mypath == null)
                    {
                        mypath = System.IO.Path.Combine("D:/", "Kinected", "Images");

                        if (!Directory.Exists(mypath))
                        {
                            Directory.CreateDirectory(mypath);
                        }
                    }

                    if (file_name == null)
                    {
                        file_name = "D:\\Kinected\\Images\\Kinect " + bb1 + ".jpeg";
                    }

                    if (image == null)
                    {
                        image = BitmapSource.Create(
                                     colorFrame.Width, colorFrame.Height, 96, 96, PixelFormats.Bgr32, null, pixels, stride);
                    }
                }

                if (totalFrames % 10 == 0)
                {
                    if (file_name != null && image != null && format != null)
                    {
                        image.Save(file_name, format);//where I get the error
                    }
                }
            }
4

2 に答える 2

2

常にパスを次のようにします

string mypath = Path.Combine(@"C:\", "Kinected", "Images");

この問題が発生する場所はかなり多くあります。

1. パスが作成されていることを確認します。

if(!Directory.Exists(mypath))
    Directory.CreateDirectory(mypath);

2. ディレクトリが既に作成されている可能性がありますが、C: である権限がありません。C: を D: に変更します。

string file_name = Path.Combine(@"D:\", "Kinect" + bb1 + ".jpg");

そこに作成されているかどうかを確認します。

このSave Methodの詳細をお読みください。

于 2012-05-07T02:17:56.583 に答える
-1

ファイル名を使用してみてください:

string file_name = "c:\\example\\path\\afile.jpg";
于 2012-05-07T02:16:12.333 に答える