diff --git a/avatar.php b/avatar.php index 77c0a7fbeb566b8b3b91226a1d254a2d64b2c0d1..aafc6e48dc446c06585eb1afd4a5c5f425582681 100644 --- a/avatar.php +++ b/avatar.php @@ -23,7 +23,7 @@ require_once INCLUDE_DIR . 'class.avatar.php'; try { $ra = new RandomAvatar($_GET['mode']); - $avatar = $ra->makeAvatar($_GET['uid']); + $avatar = $ra->makeAvatar($_GET['uid'], $_GET['size']); Http::response(200, false, 'image/png', false); Http::cacheable($_GET['uid'], false, 86400); diff --git a/include/class.avatar.php b/include/class.avatar.php index ee55147fc46442652bf1826386cf6f804c949ba4..d49af12a13e6595ae2428c1ec5283c02f13d3bf2 100644 --- a/include/class.avatar.php +++ b/include/class.avatar.php @@ -107,12 +107,17 @@ class LocalAvatar extends Avatar { var $mode; var $code; + var $size; function __construct($user, $mode) { parent::__construct($user); $this->mode = $mode; } + function setSize($size) { + $this->size = $size; + } + function getUrl($size) { $code = $this->code; if (!$code && method_exists($this->user, 'getExtraAttr')) @@ -124,8 +129,12 @@ extends Avatar { // Generate a random string of 0-6 chars for the avatar signature $uid = md5(strtolower($this->user->getEmail())); - return ROOT_PATH . 'avatar.php?'.Http::build_query(array('uid'=>$uid, - 'mode' => $this->mode)); + $args = array('uid'=>$uid, 'mode' => $this->mode); + + if ($this->size) + $args['size'] = $this->size; + + return ROOT_PATH . 'avatar.php?' . Http::build_query($args); } function toggle() { @@ -152,7 +161,7 @@ class RandomAvatar { $this->mode = $mode; } - function makeAvatar($uid) { + function makeAvatar($uid, $size=null) { $sprite = self::$sprites[$this->mode]; if (!$sprite || !is_readable(ROOT_DIR . $sprite['file']) || !extension_loaded('gd')) Http::redirect(ROOT_PATH.'images/mystery-oscar.png'); @@ -172,6 +181,11 @@ class RandomAvatar { imagecopy($avatar, $source, 0, 0, $idx*$grid, $i*$grid, $grid, $grid); } + // Resize the avatar (if applicable) + if ($size) { + $avatar = imagescale($avatar, $size, $size); + } + return $avatar; } }