How to build a url of a GRAVATAR image from a given email
How to build a url of a GRAVATAR image from a given email
There is a simple way with php, a simple script or URL manipulation to build a URL for the gravatar image corresponding to an email?
Ex. http://gravatar.com/avatars/avatar.php?email=myemail@myserver.com and this return a jpeg or png image.
Ex. http://gravatar.com/avatars/avatar.php?email=myemail@myserver.com
If there is no simple way like the example, what is the easiest way you know to resolve a url of the gravatar corresponding to an email?. Thanks
5 Answers
5
You can find a sample script with PHP code on their implementation site: http://en.gravatar.com/site/implement/php
Use this:
$userMail = whatever_to_get_the_email;
$imageWidth = '150'; //The image size
$imgUrl = 'http://www.gravatar.com/avatar/'.md5($userMail).'fs='.$imageWidth;
.
The root script is at http://www.gravatar.com/avatar/
The next part of the URL is the hexadecimal MD5 hash of the requested user's lowercased email address with all whitespace trimmed. You may add the proper file extension, but it's optional.
The complete API is here http://en.gravatar.com/site/implement/
Though @dipi-evil's solution works fine, I wasn't getting larger image with it. Here's how I got it working properly.
$userMail = 'johndoe@example';
$imageWidth = '600'; //The image size
$imgUrl = 'https://secure.gravatar.com/avatar/'.md5($userMail).'?size='.$imageWidth;
You can just see this simple function of Gravatar which can:
Return the gravatar image for that email.
<?php
class GravatarHelper
{
/**
* validate_gravatar
*
* Check if the email has any gravatar image or not
*
* @param string $email Email of the User
* @return boolean true, if there is an image. false otherwise
*/
public static function validate_gravatar($email) {
$hash = md5($email);
$uri = 'http://www.gravatar.com/avatar/' . $hash . '?d=404';
$headers = @get_headers($uri);
if (!preg_match("|200|", $headers[0])) {
$has_valid_avatar = FALSE;
} else {
$has_valid_avatar = TRUE;
}
return $has_valid_avatar;
}
/**
* gravatar_image
*
* Get the Gravatar Image From An Email address
*
* @param string $email User Email
* @param integer $size size of image
* @param string $d type of image if not gravatar image
* @return string gravatar image URL
*/
public static function gravatar_image($email, $size=0, $d="") {
$hash = md5($email);
$image_url = 'http://www.gravatar.com/avatar/' . $hash. '?s='.$size.'&d='.$d;
return $image_url;
}
}
You can use then like:
if (GravatarHelper::validate_gravatar($email)) {
echo GravatarHelper::gravatar_image($email, 200, "identicon");
}
By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.
There's an error in the url, before md5 of user email there should be no
.– Vahid Amiri
Apr 12 '17 at 6:13