3

Gravatarを正しく動作させるのに少し問題があります:

私が以下を要求するとき:

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
4

2 に答える 2

1

Gravatarアイコンにアクセス元のサーバーによって割り当てられた正確なMIMEタイプがある場合は、それを確認してください。image/jpegJPEGおよびPNG用である必要がありますimage/png

失敗すると...

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

PNGファイルは8バイトの署名で始まります。16進バイト値は89504E 47 0D 0A1A0Aです。10進値は1378078 71 13 102610です。

したがって、ファイルの先頭にある8バイトを確認するだけです。PNGの場合は、それらのバイトに指定された値が含まれますが、そうでない場合は含まれません。ファイルをダウンロードし、一時的にどこかに保存して(大きすぎてはいけないことを考えると、それほど難しくはないはずです)、ヘッダーの内容に応じて処理を変えてください。最初に間違ったタイプとして保存した場合は、いつでもファイル拡張子を変更して、PHPのグラフィックライブラリを使用できます。(またはそれを行うことは許可されていませんか?)


ちなみに、PNGヘッダーについての私のお気に入りのビット:

50 4E 47 ASCIIでは、文字PNGで、テキストエディタで表示した場合にフォーマットを簡単に識別できるようにします。

于 2010-06-25T20:01:29.773 に答える
0

終了タグはJPGですが、文字列はサーバーによって解釈され、対応する画像が送信されます。この場合はPNGです。

于 2010-06-25T19:27:14.623 に答える