如何将图像 url 转换为 system.drawing.image

Posted

技术标签:

【中文标题】如何将图像 url 转换为 system.drawing.image【英文标题】:How can I convert image url to system.drawing.image 【发布时间】:2012-08-01 20:25:21 【问题描述】:

我正在使用VB.Net 我有一个图片的网址,比如说http://localhost/image.gif

我需要从该文件创建一个 System.Drawing.Image 对象。

注意将此保存到文件然后打开它不是我的选择之一 我也在使用ItextSharp

这是我的代码:

Dim rect As iTextSharp.text.Rectangle
        rect = iTextSharp.text.PageSize.LETTER
        Dim x As PDFDocument = New PDFDocument("chart", rect, 1, 1, 1, 1)

        x.UserName = objCurrentUser.FullName
        x.WritePageHeader(1)
        For i = 0 To chartObj.Count - 1
            Dim chartLink as string = "http://localhost/image.gif"
            x.writechart( ** it only accept system.darwing.image ** ) 

        Next

        x.WritePageFooter()
        x.Finish(False)

【问题讨论】:

【参考方案1】:

您可以使用 WebClient 类下载图像,然后使用 MemoryStream 读取它:

C#

WebClient wc = new WebClient();
byte[] bytes = wc.DownloadData("http://localhost/image.gif");
MemoryStream ms = new MemoryStream(bytes);
System.Drawing.Image img = System.Drawing.Image.FromStream(ms);

VB

Dim wc As New WebClient()
Dim bytes As Byte() = wc.DownloadData("http://localhost/image.gif")
Dim ms As New MemoryStream(bytes)
Dim img As System.Drawing.Image = System.Drawing.Image.FromStream(ms)

【讨论】:

如果您担心图像不存在,您会将 MemoryStream 部分放在 using 语句中吗? 如果您同时为 C# 路由提供 ASP.Net MVC 和 ASP.Net Core 解决方案,我会支持这个 SO HARD -(ASP.Net Core 不能使用 WebClient【参考方案2】:

其他答案也是正确的,但是看到 Webclient 和 MemoryStream 没有被处理会很痛苦,我建议将您的代码放在 using 中。

示例代码:

using (var wc = new WebClient())

    using (var imgStream = new MemoryStream(wc.DownloadData(imgUrl)))
    
        using (var objImage = Image.FromStream(imgStream))
        
            //do stuff with the image
        
    

文件顶部所需的导入是System.IOSystem.NetSystem.Drawing

在 VB.net 中,语法是 using wc as WebClient = new WebClient()

【讨论】:

【参考方案3】:

您可以使用 HttpClient 并通过几行代码异步完成此任务。

public async Task<Bitmap> GetImageFromUrl(string url)
    
        var httpClient = new HttpClient();
        var stream = await httpClient.GetStreamAsync(url);
        return new Bitmap(stream);
    

【讨论】:

请考虑在您的答案中添加一些解释或细节。虽然它可能会回答问题,但只是添加一段代码作为答案,并不能帮助 OP 或未来的社区成员理解问题或建议的解决方案。【参考方案4】:

你可以试试这个来获取图片

Dim req As System.Net.WebRequest = System.Net.WebRequest.Create("[URL here]")
Dim response As System.Net.WebResponse = req.GetResponse()
Dim stream As Stream = response.GetResponseStream()

Dim img As System.Drawing.Image = System.Drawing.Image.FromStream(stream)
stream.Close()

【讨论】:

你能告诉我我怎样才能对Response.ContentType = "image/png"我非常欣赏的页面做同样的想法 我可以这样做,就像任何图像一样,response.GetResponseStream() 必须可以正常工作。【参考方案5】:

iTextSharp 能够接受 Uri 的:

Image.GetInstance(uri)

【讨论】:

【参考方案6】:
Dim c As New System.Net.WebClient
Dim FileName As String = "c:\***.png"
c.DownloadFile(New System.Uri("http://cdn.sstatic.net/***/img/sprites.png?v=5"), FileName)
Dim img As System.Drawing.Image
img = System.Drawing.Image.FromFile(FileName)

【讨论】:

其实我更喜欢他的^我急着要第一。 不需要保存文件(您可以使用内存流解决),只需添加潜在问题(假设您在无法在指定路径中写入的 Web 应用程序中)

以上是关于如何将图像 url 转换为 system.drawing.image的主要内容,如果未能解决你的问题,请参考以下文章

如何将字符串 pic URL 转换为图像并显示在图像标签中。?

如何将图像 url 转换为 system.drawing.image

使用JavaScript将图像URL中的链接从s3转换为文件对象

如何使用 C# 将图像转换为 Html 的数据 URI?

如何在sails.js 或通常在服务器端JavaScript 中将图像转换为base64 编码的数据URL?

如何将 Firebase 上传图片的图片下载 URL 转换为 base64