2017-08-30 4 views
0

私はUWPアプリケーションのネットワークディレクトリに画像ソースを設定する多くの方法を試しました。しかし、それらのどれも働かないUWPネットワークディレクトリから画像を表示する方法

BitmapImage bitmap = new BitmapImage(new Uri(@"\\venera\Mariner\747\03_WEDNESDAY\003\00 Flat B -\APR3783216-MED-BLK TAPE-GB-Apron.jpg")); 
UserImage.Source = bitmap; 

bitmap.UriSource = new Uri(@"\\venera\Mariner\747\03_WEDNESDAY\003\00 Flat B -\APR3783216-MED-BLK TAPE-GB-Apron.jpg", UriKind.Absolute); 
UserImage.Source = bitmap; 

:たとえば、私はこの例を試してみました。私は次のエラーで終わった E_NETWORK_ERROR私は多くのリンクを他のリソースからstackoverflowから読んだが、私のために働くものは何もありません。

必要な機能と宣言を設定しました。

私はWindows.Storage.Pickers.FolderPickerで試してみましたが、ファイルを読み取るフォルダの場所を設定できる場所が見つかりませんでした。 フォルダピッカーを開く必要はなく、ネットワークの指定された場所から直接画像を取得したいだけです。

このチケットに関連付けることがありますか。How to display an image from a network folder or local drive in a Windows Universal App これは私の仕事で私を助けてくれません。

は、私も私のためにこれらの例を試してみましたが、まだ目標を達成できませんでした: https://docs.microsoft.com/en-us/windows/uwp/files/quickstart-managing-folders-in-the-music-pictures-and-videos-libraries

https://docs.microsoft.com/en-us/uwp/api/windows.ui.xaml.controls.image

私はあなたが任意のパスを使用することはできませんSystem.UnauthorizedAccessException: 'Access is denied.エラー

+0

私は一度、同様の問題があった

は、これが私のPackage.appxmanifestです。私の解決策は、Visual Studioをローカルの管理者として実行することでした。私の場合、ローカル管理者はネットワークフォルダから読み取る権限を持っていません。 – Noren

+0

@Norenこれらのファイルに誰もがアクセスできるようにアクセス権を設定しました。 –

+0

コンパイルしてアカウントでエクスプローラで開くとうまくいくと思います。ファイルシステムのパーミッションを変更するだけでは不十分です。 – Noren

答えて

3

ネットワーク上の共有フォルダ内の.jpgファイルを設定するには、我々はStorageFileが最初に取得し、その後BitmapImageにソースを設定するSetSourceメソッドを使用することができます。共有フォルダ内のファイルにアクセスするには、アプリマニフェストでいくつかの機能を宣言する必要があります。

enter image description here

汎用名前付け規則(UNC)は、一般に、共有ネットワークフォルダにアクセスするためのMicrosoft Windowsで使用されるネーミングシステムです。詳細は、を参照してください。設定のBitmapImageの

<Applications> 
    <Application Id="App" Executable="$targetnametoken$.exe" EntryPoint="UWP_how_to_show_image_from_a_network.App"> 
    <uap:VisualElements DisplayName="UWP how to show image from a network" Square150x150Logo="Assets\Square150x150Logo.png" Square44x44Logo="Assets\Square44x44Logo.png" Description="UWP how to show image from a network" BackgroundColor="transparent"> 
     <uap:DefaultTile Wide310x150Logo="Assets\Wide310x150Logo.png"> 
     </uap:DefaultTile> 
     <uap:SplashScreen Image="Assets\SplashScreen.png" /> 
     </uap:VisualElements> 
    <Extensions> 
     <uap:Extension Category="windows.fileTypeAssociation"> 
     <uap:FileTypeAssociation Name="mypictest"> 
      <uap:DisplayName>MyPicTest</uap:DisplayName> 
      <uap:SupportedFileTypes> 
      <uap:FileType>.jpg</uap:FileType> 
      </uap:SupportedFileTypes> 
     </uap:FileTypeAssociation> 
     </uap:Extension> 
    </Extensions> 
    </Application> 
</Applications> 
<Capabilities> 
    <Capability Name="internetClient" /> 
    <Capability Name="privateNetworkClientServer" /> 
    <Capability Name="internetClientServer" /> 
    <uap:Capability Name="enterpriseAuthentication" /> 
</Capabilities> 

コード:

StorageFolder folder = await StorageFolder.GetFolderFromPathAsync(@"\\venera\Mariner\747\03_WEDNESDAY\003\00 Flat B -"); 
    StorageFile file = await folder.GetFileAsync("APR3783216-MED-BLK TAPE-GB-Apron.jpg"); 
    using (var stream = await file.OpenAsync(Windows.Storage.FileAccessMode.Read)){ 
    BitmapImage bitmap = new BitmapImage(); 
    bitmap.SetSource(stream); 
    UserImage.Source = bitmap; 
} 
2

を取得しています。 KnownFoldersとローカルアプリのパスのみ。しかし、あなたはどこからでもバイトの配列を取得することがあります。

  var file = File.ReadAllBytes(_path); 

      var bitmap = new BitmapImage(); 

      using (InMemoryRandomAccessStream stream = new InMemoryRandomAccessStream()) 
      { 
       await stream.WriteAsync(file.AsBuffer()); 
       stream.Seek(0); 
       await bitmap.SetSourceAsync(stream); 
      } 
関連する問題