【问题标题】:Confusion with Gravatar URLs与 Gravatar URL 混淆
【发布时间】:2010-06-25 19:24:34
【问题描述】:

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

当我提出以下要求时:

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

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

...表明该文件是 PNG 图像。

这让我很困惑 - 我认为 Gravatar 是 JPEG 图像。似乎他们都可以。如何确定给定图像是 PNG 还是 JPEG最好不先下载它


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

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

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

【问题讨论】:

    标签: image format gravatar


    【解决方案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,如果在文本编辑器中查看,人们可以轻松识别格式。

    【讨论】:

    • 是的。但是 JPEG 文件不是在某处有 'JFIF' 吗?无论如何,谢谢。
    • @George:不一定(尽管它们通常有 JFIF 标头)。 en.wikipedia.org/wiki/JPEG#JPEG_files 只是PNG头首先跳进了我的脑海。
    • 根据我的经验,gravatar.com 上的 Content-Type 标头是值得信赖的,因此您无需下载整个图像即可确定它:只需触发 HTTP HEAD hequest,例如:curl --head 'http://gravatar.com/avatar/03cd042b82ac85b2c5fe0757a94e0413?s=1' 或 @ 987654329@
    • @ecmanaut:在我写这个答案的时候,我对 HTT 协议的工作原理并不是很了解,所以谢谢你做这个笔记(虽然可能有点太晚了对乔治有用)。有趣的是,在我刚刚学习的网络课程中,我们从未真正使用过 HEAD 方法或对 mimetypes 做过任何事情......
    【解决方案2】:

    结束标签为JPG,但该字符串由服务器解释并发送相应的图像。在本例中为 PNG。

    【讨论】:

    • 那么是all Gravatars PNG 图像吗?如果不是,我如何根据个人情况判断它是哪种格式?
    • @George,是的,它们都以 PNG 格式发送。
    • @George:我以为它们都是作为 PNG 发送的。我猜有些是有些不是。我猜不同类型的 gravatar 会决定它发送的类型。
    • @Josh:我怎样才能知道我得到的是哪一个?我正在用 PHP 的 GD 库处理它们,所以我必须提前知道。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-21
    • 2021-10-07
    • 2018-07-26
    • 2021-12-04
    • 2019-03-28
    • 2014-07-09
    • 1970-01-01
    相关资源
    最近更新 更多