我正在编写一个从网上下载信息的程序,其中一部分是图像.
目前我遇到了问题,因为下载图像的代码与显示它们的代码不同(在mvc下).如果发布了404或者图像下载以某种方式失败,则显示代码弹出消息支持,我想避免.
有没有简单的方法来检查图像是否有效?我只关心jpg,gif和png.
注意:我不关心读取图像数据,只是为了检查它是否是有效的图像格式.
您想检查下载是否成功?或者您想检查下载的内容实际上是图像吗?
在前一种情况下,检查的唯一方法是尝试访问它并查看您获得的HTTP响应代码类型.您可以发送HTTP HEAD
请求以获取响应代码而无需实际下载图像,但如果您只是继续下载图像(如果成功的话),那么发送单独的HEAD
请求似乎是浪费时间(和带宽).
或者,如果您确实想要检查您正在下载的是有效的图像文件,则必须阅读整个文件以检查其是否存在损坏.但是,如果您只想检查文件扩展名是否准确,那么检查文件的前几个字节就足够了.所有GIF图像均以ASCII文本开头GIF87
或GIF89
根据使用的GIF规范开始.PNG图像以ASCII文本开头PNG
,JPEG图像有一些幻数,看起来0xd8ffe0ff
基于我看过的JPEG.(你应该做一些研究并检查一下,试试维基百科的链接)但请记住,要获得图像的前几个字节,你需要发送一个可以返回404的HTTP请求(并且在那里如果您没有任何图像可以检查).