私は 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));
正常に動作していますが、ここではファイルを復号化してローカルドライブに保存する必要があるため、必要ありません。
私を助けてください、私はそれに苦労しています。
よろしく
アヌパム・ミシュラ