将二进制数据从URL转换为图像文件



我读了几篇关于StackOverflow的文章,但似乎没有一篇适合我,所以情况是这样的。

我有一个网页,是不受我的控制。它包含一个在标记中被引用为类似<img src="getimage.asp?pic=4c54aae0ea..." />的图像。给定该图像的URL,我想下载它,将其保存到磁盘并对其进行处理。

当我直接在浏览器中输入URL时,我得到一个二进制流。这是第一批字符。

ÿØÿàJFIFHHÿþLEAD Technologies Inc. V1.01ÿÛ„ÿÄ¢       }!1AQa"q2‘¡#B±ÁRÑð$3br‚     %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖ×ØÙÚáâãäåæçèéêñòóôõö÷øùúw!1AQaq"2B‘¡±Á   #

如何使用c#或任何其他语言将数据转换为图像?由于我不控制页面,我不知道数据是如何编码的-所以我仍然可以解码吗?

从前两个字符可以看出,字符串"LEAD Technologies Inc."包含在数据中,所以我猜它不是所有的图像数据。但至少,Chrome显然知道如何解码它。在谷歌上查了一下,发现"LEAD技术"是一个成像SDK,但他们的网站似乎没有提供太多关于它的使用信息,我也不精通图像处理。

前两个字符表明响应可能是一个被解释为ASCII文本的jpeg文件。我猜HTTP响应中的Content-Type标头有错误的值,可能是text/plaintext/html而不是imagejpeg。这使得Chrome将图像显示为纯文本。

我认为你不需要转换数据。只需将响应流保存到一个文件中,您就会得到一个合适的jpeg文件:

string url = "http://my-domain/getimage.asp?pic=4c54aae0ea...";
string fileLocation = @"C:MyImage.jpg";
var client = new WebClient();
client.DownloadFile(url, fileLocation);

我认为响应可能是jpeg的原因是,jpeg文件以0xFFD8FFE0开始,当显示为ISO 8859-1编码文本时,看起来像ÿØÿà

相关内容

  • 没有找到相关文章

最新更新