gpt4 book ai didi

c# - 当图像站点的连接不是私有(private)时如何加载图片框图像?

转载 作者:行者123 更新时间:2023-11-30 21:30:04 25 4
gpt4 key购买 nike

我有一个 ONVIF 网络摄像机提供的链接,其中包含该摄像机拍摄的快照。

当我尝试在chrome等浏览器上打开此链接时,出现如下提示:

Your connection to this site is not private

当我尝试从 C# Windows 窗体图片框加载此图像时,出现以下错误:

加载:

picturebox0.Load(mySnapUrl);

错误:

System.Net.WebException:“远程服务器返回错误:(401) 未经授权。”

输入正确的用户名和密码后,我可以在浏览器中看到图像。

有什么办法可以在图片框中加载这样的图像吗?

编辑 1:

我试过了 this solution在我手动添加凭据的 Web 客户端上手动加载图像,但我仍然在 downloadData 行遇到相同的错误。

var webClient = new WebClient();
var credentialCache = new CredentialCache();
credentialCache.Add(new Uri(mySnapUrl), "Basic", new NetworkCredential(user, password));
webClient.Credentials = credentialCache;
var imgStream = new MemoryStream(webClient.DownloadData(mySnapUrl));//Error
picturebox0.Image = new System.Drawing.Bitmap(imgStream);

最佳答案

正如@Simon Mourier 和@Reza Aghaei 在评论中所说,我不需要添加CredentialCache,只需添加Credentials。解决方案类似于this one .

解决方案:

var webClient = new WebClient();
webClient.Credentials = new NetworkCredential(user, password);
var imgStream = new MemoryStream(webClient.DownloadData(mySnapUrl));//Good to go!
picturebox0.Image = new System.Drawing.Bitmap(imgStream);

编辑:

我个人必须能够异步加载上述图像,因为我过去常常使用 picturebox0.LoadAsync(mySnapUrl) 加载我的图像。

我从这个 source 得到了重要的想法.

为了能够与需要凭据的图像相同,我创建了一个异步任务来加载图像...

private async Task<Image> GetImageAsync(string snapUrl, string user, string password)
{
var tcs = new TaskCompletionSource<Image>();

Action actionGetImage = delegate ()
{
var webClient = new WebClient();
webClient.Credentials = new NetworkCredential(user, password);
var imgStream = new MemoryStream(webClient.DownloadData(snapUrl));
tcs.TrySetResult(new System.Drawing.Bitmap(imgStream));
};

await Task.Factory.StartNew(actionGetImage);

return tcs.Task.Result;
}

...然后使用以下内容设置图像:

var result = GetImageAsync(mySnapUrl, user, password);
result.ContinueWith(task =>
{
picturebox0.Image = task.Result;
});

关于c# - 当图像站点的连接不是私有(private)时如何加载图片框图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54834316/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com