/** * @group slow */ public function testIntegrationFaceInserterWorksWithRealTemplateDataObject() { $app = $this->createApplication(); $faceInserter = $app->make("FaceInserter"); $faceImage = Image::make("./tests/FaceInserterTestData/zuckerberg.jpg"); $modelInstance = new TemplateData(); $modelInstance->face_spot_placement_x = 443; $modelInstance->face_spot_placement_y = 40; $modelInstance->compatibile_face_image_width = 317; $modelInstance->compatibile_face_image_height = 282; $modelInstance->template_image_filename = 'real_template.png'; $modelInstance->save(); $retrievedFromDatabase = TemplateData::find(1); $result = $faceInserter->pasteFaceOverTemplate($faceImage, $retrievedFromDatabase); $result->save("./tests/FaceInserterTestData/real_template_data_result_from_database.jpg"); }
public function pasteFaceOverTemplate(\Intervention\Image\Image $faceImage, \Kubek\ImageManipulator\Models\TemplateData $templateData) { // resize the image so it fits into the spot it needs to be pasted in: $faceImage = $faceImage->resize($templateData->getCompatibileFaceImageWidth(), $templateData->getCompatibileFaceImageHeight()); // create an empty image the size of the template $fittingFaceImageCanvas = Image::canvas($templateData->getTemplateWidth(), $templateData->getTemplateHeight()); // paste the fitting face image onto the empty canvas on coords specified in the TemplateData: $fittingFaceImageCanvas->insert($faceImage, 'top-left', $templateData->getFaceSpotPlacementX(), $templateData->getFaceSpotPlacementY()); // paste the template overlay over the canvas with the face image: return $fittingFaceImageCanvas->insert($templateData->getTemplateImage()); }