与Gravatar网址混淆

时间:2010-06-25 19:24:35

标签: image format gravatar

让Gravatars正常工作我遇到了一些麻烦:

当我要求以下内容时:

http://gravatar.com/avatar/8a17d0d0d8bdf6a8d527bbc943a17cf8.jpg?s=64&d=identicon

Firefox自豪地展示以下内容:
http://files.quickmediasolutions.com/gravatar_p.png

...表示该文件是 PNG 图片。

这让我感到困惑 - 我认为Gravatars是JPEG图像。看起来他们也可以。如何在不首先下载的情况下查看给定图像是PNG还是JPEG


注意:有些人报告Gravatar只返回PNG图片。请解释一下:

http://files.quickmediasolutions.com/gravatar_p2.png

http://gravatar.com/avatar/03cd042b82ac85b2c5fe0757a94e0413?s=64&d=identicon

2 个答案:

答案 0 :(得分:1)

如果Gravatar图标具有您正在访问它们的服务器分配的准确MIME类型,请检查它。对于JPEG格式应为image/jpeg,对于PNG格式应为image/png

失败了......

http://en.wikipedia.org/wiki/Portable_Network_Graphics#File_header

  

PNG文件以8字节签名开头。十六进制字节值为89 50 4E 47 0D 0A 1A 0A;小数值为137 80 78 71 13 10 26 10.

所以只需检查文件开头的八个字节;如果它是PNG,它将在这些字节中具有所述值,如果不是,则不会。只需下载文件,可能暂时将其存储在某处(考虑到它不应该太大,这应该不会太难),并根据标头包含的内容进行不同的处理。您可以随时更改文件扩展名,然后使用PHP的图形库(如果您首先将其保存为错误的类型)。 (或者你不被允许这样做?)


作为旁注,我最喜欢的关于PNG标题的一点:

  

50 4E 47在ASCII中,字母为PNG,如果在文本编辑器中查看,则允许用户轻松识别格式。

答案 1 :(得分:0)

结束标记是JPG,但字符串由服务器解释并发送相应的图像。在这种情况下是PNG。