在 winform 应用程序的表单中,我必须显示存储在网络服务器上的图像(多个图像)。显示图像没有问题,因为我可以简单地将 URL 分配给图片框。
picturebox1.ImageLocation = "http://example.com/Image.jpg";
那个表格会经常打开很多次,现在每次打开表格,每次都在下载图片。没有必要增加流量。
是否可以告诉图片框缓存图像(就像浏览器一样),所以下次请求相同的图像时,它应该快速加载。那可能吗?
在 winform 应用程序的表单中,我必须显示存储在网络服务器上的图像(多个图像)。显示图像没有问题,因为我可以简单地将 URL 分配给图片框。
picturebox1.ImageLocation = "http://example.com/Image.jpg";
那个表格会经常打开很多次,现在每次打开表格,每次都在下载图片。没有必要增加流量。
是否可以告诉图片框缓存图像(就像浏览器一样),所以下次请求相同的图像时,它应该快速加载。那可能吗?
预加载图像
Image img = Image.FromFile("...");
然后您可以将图像提供给 PictureBox:
pictureBox1.Image = img;
您可以将图像存储在临时文件夹中,并在打开表单时首先检查该文件夹的临时文件夹。
试试这个方法:
首先创建一个函数来检查文件是否存在。如果存在,则只需从本地路径加载文件,否则从 URL 下载文件并将其存储在本地。
//Function to validate the local cache file
private Image load_image()
{
Image img=null;
if(!(File.Exists(@"d:\samp.png")))
{
using (HttpClient httpclient= new HttpClient())
{
var response = httpclient.GetAsync(@"https://i.imgur.com/Jb6lTp1.png");
if (!response.Result.IsSuccessStatusCode)
{
return img;
}
using (var fs= new FileStream(@"d:\samp.png",FileMode.CreateNew))
{
response.Result.Content.CopyToAsync(fs);
}
}
}
img = Image.FromFile(@"d:\samp.png");
return img;
}
//calling the function of click event
private void button1_Click(object sender, EventArgs e)
{
pictureBox1.Image = load_image();
pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
}