_eh = EH::getInstance(); } public function connect(Application $app) { // creates a new controller based on the default route $controllers = $app['controllers_factory']; $controllers->get('/images', function (Application $app) { $getEmoBlocks = function($emotion, $feature, $steps = 6) use($em) { $hitRepo = $this->_eh->getEm()->getRepository(EmotionHero\Models\Hit::class); $blocks = []; foreach(range(0, 100, 100/($steps-1)) as $i) { /* @var $hitRepo EmotionHero\Models\HitRepository */ $hit = $hitRepo->getClosestHitWithImage($emotion, $i); $img = "data:image/x-icon;base64,".$hit->getFeatureImgAsString($feature); $score = $hit->getEmotions()->getEmotionScore($emotion); $percentage = sprintf("%.0f %%",$score); $blocks[] = [ 'hit_id' => $hit->getId(), 'img_data' => $img, 'percentage' => $percentage, ]; } return $blocks; }; $features = ['brows' => 6, 'nose' => 5, 'mouth' => 8]; $output = []; foreach($features as $feature => $steps) { foreach(Models\Emotions::$EMOTIONS as $emotion) { $output[$feature][$emotion] = $getEmoBlocks( $emotion, $feature == 'mouth' ? 'mouth_left':$feature, $steps ); } } return $app['serializer']->serialize($output, 'json'); }); return $controllers; } }