<?php require_once 'instantavatar.php'; header('content-type: image/png'); $ia = new InstantAvatar('Comfortaa-Regular.ttf', 18, 40, 40, 2, 'glass.png'); $ia->generateRandom('ia'); $ia->passThru();
/** * Generate an avatar image * @param User $oUser * @return string Relative URL to avatar image */ public function generateAvatar($oUser, $aParams = array(), $bOverwrite = false) { $iAvatarDefaultSize = BsConfig::get('MW::Avatars::DefaultSize'); $iAvatarHeight = isset($aParams['height']) ? $aParams['height'] : $iAvatarDefaultSize; $iAvatarWidth = isset($aParams['width']) ? $aParams['width'] : $iAvatarDefaultSize; $iUserId = $oUser->getId(); $sUserName = $oUser->getName(); $sUserRealName = $oUser->getRealName(); $sAvatarFileName = self::$sAvatarFilePrefix . $iUserId . ".png"; # TODO: Check if this is more expensive than a simple file_exists() $oFile = BsFileSystemHelper::getFileFromRepoName($sAvatarFileName, 'Avatars'); # If avatar doesn't yet exit, create one if (!$oFile->exists() || $bOverwrite) { $sGenerator = BsConfig::get('MW::Avatars::Generator'); switch ($sGenerator) { case 'Identicon': require_once __DIR__ . "/includes/lib/Identicon/identicon.php"; $sRawPNGAvatar = generateIdenticon($iUserId, $iAvatarDefaultSize); # non-random break; case 'InstantAvatar': require_once __DIR__ . "/includes/lib/InstantAvatar/instantavatar.php"; $iFontSize = round(18 / 40 * $iAvatarDefaultSize); $oIA = new InstantAvatar(__DIR__ . '/includes/lib/InstantAvatar/Comfortaa-Regular.ttf', $iFontSize, $iAvatarDefaultSize, $iAvatarDefaultSize, 2, __DIR__ . '/includes/lib/InstantAvatar/glass.png'); if ($sUserRealName) { preg_match_all('#(^| )(.)#u', $sUserRealName, $aMatches); $sChars = implode('', $aMatches[2]); if (mb_strlen($sChars) < 2) { $sChars = $sUserRealName; } } else { $sChars = $sUserName; } $oIA->generateRandom($sChars); # random $sRawPNGAvatar = $oIA->getRawPNG(); break; default: throw new MWException('FATAL: Avatar generator not found!'); break; } $oStatus = BsFileSystemHelper::saveToDataDirectory($sAvatarFileName, $sRawPNGAvatar, $this->mInfo[EXTINFO::NAME]); if (!$oStatus->isGood()) { throw new MWException('FATAL: Avatar could not be saved!'); } # found no way to regenerate thumbs. just delete thumb folder if it exists $oStatus = BsFileSystemHelper::deleteFolder('Avatars' . DS . 'thumb' . DS . $sAvatarFileName, true); if (!$oStatus->isGood()) { throw new MWException('FATAL: Avatar thumbs could no be deleted!'); } $oFile = BsFileSystemHelper::getFileFromRepoName($sAvatarFileName, 'Avatars'); } $sNewUserImageSrc = $oFile->createThumb($iAvatarWidth, $iAvatarHeight); return $sNewUserImageSrc; }