c# 通过地址创建Image

在C#中,如果你有一个图片的URL(即图片的在线地址),而不是文件路径,你不能直接通过Image类的构造函数或Image.FromFile方法来加载它,因为这些方法是为本地文件设计的。但是,你可以使用WebClientHttpClient或其他网络相关的类来从URL下载图片内容,并将其转换为Image对象。

以下是使用WebClient类从URL加载图片并将其转换为Image对象的一个示例:

 
using System;  
using System.Drawing;  
using System.IO;  
using System.Net;  
  
public class ImageFromUrl  
{  
    public static Image LoadImageFromUrl(string url)  
    {  
        using (WebClient webClient = new WebClient())  
        {  
            byte[] imageBytes = webClient.DownloadData(url);  
            using (MemoryStream ms = new MemoryStream(imageBytes))  
            {  
                return Image.FromStream(ms);  
            }  
        }  
    }  
  
    // 使用示例  
    static void Main()  
    {  
        string imageUrl = "http://example.com/path/to/image.jpg"; // 替换为实际的图片URL  
        Image image = LoadImageFromUrl(imageUrl);  
  
        if (image != null)  
        {  
            // 现在你可以使用image对象了,比如显示在PictureBox控件中  
            // ...  
  
            // 示例:保存图片到本地文件  
            string savePath = "local/path/to/save/image.jpg";  
            image.Save(savePath, System.Drawing.Imaging.ImageFormat.Jpeg);  
        }  
    }  
}

请注意,WebClient类已标记为过时(在.NET Core和.NET 5/6/7等中),尽管它仍然可以在许多情况下使用。对于新的应用程序,建议使用HttpClient类,因为它提供了更多的功能和更好的性能。

以下是使用HttpClient的示例:

 
using System;  
using System.Drawing;  
using System.IO;  
using System.Net.Http;  
using System.Threading.Tasks;  
  
public class ImageFromUrlWithHttpClient  
{  
    public static async Task<Image> LoadImageFromUrlAsync(string url)  
    {  
        using (HttpClient httpClient = new HttpClient())  
        {  
            byte[] imageBytes = await httpClient.GetByteArrayAsync(url);  
            using (MemoryStream ms = new MemoryStream(imageBytes))  
            {  
                return Image.FromStream(ms);  
            }  
        }  
    }  
  
    // 使用示例(异步)  
    static async Task Main()  
    {  
        string imageUrl = "http://example.com/path/to/image.jpg"; // 替换为实际的图片URL  
        Image image = await LoadImageFromUrlAsync(imageUrl);  
  
        if (image != null)  
        {  
            // 现在你可以使用image对象了  
            // ...  
  
            // 示例:保存图片到本地文件  
            string savePath = "local/path/to/save/image.jpg";  
            image.Save(savePath, System.Drawing.Imaging.ImageFormat.Jpeg);  
        }  
    }  
}

在这个示例中,LoadImageFromUrlAsync方法是一个异步方法,它使用HttpClientGetByteArrayAsync方法来异步地从URL下载图片内容,并返回一个Image对象。在Main方法中,我们使用await关键字来异步地调用这个方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值