1

私は WPF でアプリケーションを作成しました。これは、リクエストを作成してレスポンスを取得することにより、REST API を介してデータを呼び出しています。レスポンスを取得した後、すべての画像ファイルをダウンロードして暗号化し、ローカル ドライブに保存し、ローカルの暗号化された画像のパスをアプリケーションにあるローカル DB (SQL サーバー Compact 4.0)。

上記のプロセスはすべてバックグラウンド Thread で実行されています。

これで、アプリケーションのプレゼンテーション層は常にローカル DBを検索し、画像パスを取得した場合、アプリケーションは次の方法でそれを復号化し、それを使用してプレゼンテーション層に表示します。

Image img_home = new Image();
img_home.Width = 1920;
img_home.Height = 1080;  
img_home.Source = DecryptFile.LoadBitmapImages(mediaPath); 
grid_main_Home_page.Children.Add(img_home);

//where grid_main_Home_page is a Grid in application

public static BitmapSource LoadBitmapImages(string ImagePath_to_Save)
{
    byte[] ImageBytes;
    BitmapSource bs1;
    // if (File.Exists(ImagePath_to_Save))
    //{
        ImageBytes = File.ReadAllBytes(ImagePath_to_Save);
        using (System.IO.MemoryStream Stream = new System.IO.MemoryStream(ImageBytes))
        {
            Bitmap source = new Bitmap(Stream);
            IntPtr ip = source.GetHbitmap();
            bs1 = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(ip, IntPtr.Zero, Int32Rect.Empty,

            System.Windows.Media.Imaging.BitmapSizeOptions.FromEmptyOptions());

            return bs1;
        }
    // }
}

マシンのどこでも .exe でアプリケーションを直接実行しているときに、アプリケーションが正常に動作します。

C:\Program Files (x86)\ または C:\Program Files でアプリケーションを実行しているため、次のエラーが表示されてクラッシュします--ここに画像の説明を入力

イメージファイルが存在するディレクトリを見ていると、コードのその部分をtry catchブロックに入れても同じエラーが発生します。

次のような画像ソースを入れている場合

img_home.Source =new BitmapImage(new Uri(mediaPath,UriKind.Absolute)); 

正常に動作していますが、ここではファイルを復号化してローカルドライブに保存する必要があるため、必要ありません。

私を助けてください、私はそれに苦労しています。

よろしく

アヌパム・ミシュラ

4

1 に答える 1

3

Windows XP より新しいバージョンの Windows では、Program Directory に書き込むことはできません。そして、それは良いことです。ユーザーデータ用の特別なフォルダーがあります。クエリを実行して、そこにデータを保存できます。

// Sample for the Environment.GetFolderPath method 
using System;

class Sample 
{
    public static void Main() 
    {
       var folder = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
       Console.WriteLine(folder);
       Console.ReadLine();
    }
}
于 2013-10-04T11:52:35.893 に答える