1

ページにがWebViewあり、そのコンテンツが によってロードされたとしWebView.NavigateToString(string html)ます。問題は、HTML文字列に次の<img>ようないくつかのタグが含まれていることです

<img src="http://www.remotefakesite.com/1.jpg" />

ただし、リクエストに特別な Cookie が含まれていないと、画像を正しくダウンロードできません。しかし、リクエストはコントロールによって送信されます。リクエストを変更する方法がわかりません(Cookieを追加する)。を設定HttpRequest.DefaultWebProxyしてみましたが、組み込みコントロールから送信されたリクエストに対しては機能しません。

別の解決策は、自分の HttpWebRequest (正しい Cookie を使用) によって画像をローカル フォルダーにダウンロードし、html 文字列の img タグを次のように変更することです。

<img src="files:///xxxxx" />

しかし、明らかにfiles:///スキームはメトロ アプリのセキュリティ ポリシーに反しています。ダウンロードした画像は私のプロジェクトの一部ではないため、どちらms-appxも機能しません。ms-appdata

解決策はありますか?

4

4 に答える 4

3

ここでいくつかのテストを行いました。プロジェクト フォルダー内のサンプルにイメージをダウンロードできるかどうか。「Media」フォルダーの例では、次のコードを使用して画像を開くことができます。

<img src="ms-appx-web:///Media/10.jpg" />
于 2012-10-22T13:40:32.607 に答える
2

画像のサイズが問題にならない場合は、必要な Cookie を含むカスタム HTTP リクエストを使用して画像をダウンロードし、base64 でエンコードして、src 属性に挿入してみてください。

<img src="data:image/png;base64,iVBOR8Q..." />

そして、NavigateToString メソッドを使用して、残りの html と共に WebView に渡します。

これは世界で最高のソリューションではないかもしれませんが、他のオプションと比較して機能します.

于 2012-11-19T04:21:05.830 に答える
0

アプリの画像ライブラリ機能を有効にし、画像ライブラリの場所を使用して画像をダウンロードできます。これは、写真ライブラリへのアクセスに関するガイドです。

アップデート:

次に、画像ライブラリ内の画像オブジェクトから画像が作成されます。例は次のとおりです。

async private void LoadImage()
{
    try
    {
        IReadOnlyList<Windows.Storage.StorageFile> resultsLibrary =
            await Windows.Storage.KnownFolders.PicturesLibrary.GetFilesAsync();
        MessageBlock.Text += "Show image: " + resultsLibrary[0].Name + "\n";
        Windows.Storage.Streams.IRandomAccessStream imageStream =
            await resultsLibrary[0].OpenAsync(Windows.Storage.FileAccessMode.Read);
        Windows.UI.Xaml.Media.Imaging.BitmapImage imageBitmap =
            new Windows.UI.Xaml.Media.Imaging.BitmapImage();
        imageBitmap.SetSource(imageStream);
        ImagePlayer.Source = imageBitmap;
    }
    catch (Exception ex)
    {
        MessageBlock.Text += "Exception encountered: " + ex.Message + "\n";
    }
}
于 2012-10-22T07:24:21.073 に答える
0

これをより適切に使用して、HTML のように記述できます。

this.InitializeComponent();

string htmContent = @" <html>
<head></head>
<body>
<img src="http://www.remotefakesite.com/1.jpg" />
</body>
</html>";

preview.NavigateToString(htmContent);

webview 要素のみが必要です (ここでは「プレビュー」と呼びます)。

于 2012-10-22T09:43:07.177 に答える