【发布时间】:2016-05-26 04:35:39
【问题描述】:
我正在尝试将图像加载为 base 64 字符串,以便可以像这样在 html 中显示它:
<html><body><img src="data:image/jpeg;base64,/></img></body></html>
到目前为止,这是我的代码,但它并没有真正起作用:
public async static Task<string> getImage(string url)
{
var request = (HttpWebRequest)WebRequest.Create(url);
request.Accept = "data:image/jpg;charset=base64";
request.Credentials = new NetworkCredential(user, pw);
using (var response = (HttpWebResponse)(await Task<WebResponse>.Factory.FromAsync(request.BeginGetResponse, request.EndGetResponse, null)))
{
StreamReader sr = new StreamReader(response.GetResponseStream());
return sr.ReadToEnd();
}
我尝试使用我在其他地方找到的这种方法将返回字符串编码为 base64,但是当将其放在 html 中时,图像仅显示典型的占位符。
public static string Base64Encode(string plainText)
{
var plainTextBytes = System.Text.Encoding.UTF8.GetBytes(plainText);
return System.Convert.ToBase64String(plainTextBytes);
}
编辑:
【问题讨论】:
-
恐怕真的不清楚你想做什么。网址是什么?图片?您是否正在创建 HTML,并希望将来自另一个 URL 的数据嵌入其中?如果是这样,我会在不使用 base64 或文本的情况下获取该数据...
-
是的,网址指向图片并以 .jpg 结尾。这样做是有充分理由的,但它确实很复杂,我认为这不会增加我的问题。
-
@Liam 我不能这样做,html 会显示在不支持身份验证的 xamarin 表单 webview 中,所以这就是我需要手动加载图像的原因。
-
在我写答案之前,你有什么理由不在这里使用
HttpClient,而是使用旧的BeginGetResponse,EndGetResponse? -
@JonSkeet 恐怕唯一的原因是我缺乏经验,所以我不知道更好:)