public function directCustomImageCallable(PageInfo $pageInfo, RouteParams $routeInfo, \Auryn\Injector $injector, $params) { App::setupCategoryExample($routeInfo); $imageFunction = CategoryInfo::getCustomImageFunctionName($pageInfo); global $imageType; ob_start(); $injector->execute($imageFunction); if ($imageType == null) { ob_end_clean(); throw new \Exception("imageType not set, can't cache image correctly."); } $imageData = ob_get_contents(); ob_end_clean(); $simpleNameWithExtension = $pageInfo->getSimpleName($params) . '.' . $imageType; return new BlobBody($simpleNameWithExtension, $imageData, "image/" . $imageType); }