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

时间:2013-04-27 19:56:47

标签: image binary-data

我在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,但他们的网站似乎没有提供有关它的使用的很多信息,我也不精通图像处理。任何想法都将不胜感激。

1 个答案:

答案 0 :(得分:2)

前几个字符表示响应可能是解释为ASCII文本的jpeg文件。我想HTTP响应中的Content-Type标头有错误的值,可能类似text/plaintext/html而不是image\jpeg。这使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

相关问题