Пример #1
0
 /**
  * Print the image as an ImageWorkshop object
  *
  * @return ImageWorkshop $bgLayer
  */
 public function paintImage()
 {
     // Image Settings
     $width = 700;
     $height = 700;
     $bgColor = 'FFC4C6';
     $fontDirectory = public_path('assets/fonts/');
     // Border Settings
     $border = 9;
     $borderColor = 'FFFFFF';
     // Recipient Settings
     $toColor = 'f51e6b';
     $toFontSize = 25;
     $toGreeting = 'Dear';
     // Sender Settings
     $fromColor = 'f51e6b';
     $fromFontSize = 16;
     $fromMessage = 'your secret crush';
     // Message Settings
     $message = $this->parseMessage($this->message);
     $msgColor = 'FFFFFF';
     $msgFontSize = 26;
     // Initialise Layers
     $bgLayer = ImageWorkshop::initVirginLayer($width, $height, $bgColor);
     // Footer
     $footerLayer = ImageWorkshop::initVirginLayer($bgLayer->getWidth(), $bgLayer->getHeight());
     $footerBird = ImageWorkshop::initFromPath(public_path('assets/img/shareable/footer-bird.png'));
     $footerFrom = ImageWorkshop::initTextLayer(strtoupper($fromMessage), $fontDirectory . 'Proxima_Nova/PROXIMANOVA-SEMIBOLD.OTF', $fromFontSize, $fromColor, 0);
     // Border
     $borderLayer = ImageWorkshop::initVirginLayer($bgLayer->getWidth(), $bgLayer->getHeight());
     $hBorder = ImageWorkshop::initVirginLayer($width, $border, $borderColor);
     $vBorder = ImageWorkshop::initVirginLayer($border, $height, $borderColor);
     // Recipient
     $toLayer = ImageWorkshop::initVirginLayer($bgLayer->getWidth(), $bgLayer->getHeight());
     $toText = ImageWorkshop::initTextLayer(strtoupper($toGreeting . ' ' . $this->recipient), $fontDirectory . 'Proxima_Nova/PROXIMANOVA-REGULAR.OTF', $toFontSize, $toColor, 0, $borderColor);
     $toBackground = ImageWorkshop::initVirginlayer($toText->getWidth() + $toFontSize * 2, $toFontSize * 2, $borderColor);
     $toLeftBorder = ImageWorkshop::initFromPath(public_path('assets/img/shareable/to-bookend-left.png'));
     $toRightBorder = ImageWorkshop::initFromPath(public_path('assets/img/shareable/to-bookend-right.png'));
     // Message
     $msgLayer = ImageWorkshop::initVirginLayer($bgLayer->getWidth(), $bgLayer->getHeight());
     $msgText = ImageWorkshop::initTextLayer(strtoupper($message), $fontDirectory . 'Proxima_Nova/PROXIMANOVA-SEMIBOLD.OTF', $msgFontSize, $msgColor, 0);
     // Add Layers
     // Recipient
     $toLayer->addLayer(1, $toBackground, 0, 100 - $toFontSize / 2, 'MT');
     $toLayer->addLayer(2, $toText, 0, 100, 'MT');
     $toLayer->addLayer(3, $toLeftBorder, 0 - ($toBackground->getWidth() / 2 + $toLeftBorder->getWidth() / 2), 100 - $toFontSize / 2, 'MT');
     $toLayer->addLayer(3, $toRightBorder, 0 - 1 + ($toBackground->getWidth() / 2 + $toLeftBorder->getWidth() / 2), 100 - $toFontSize / 2, 'MT');
     // Add Message
     $msgLayer->addLayer(1, $msgText, 0, -50 + $msgText->getHeight() / (substr_count($message, "\n") + 1), 'MM');
     // Add Borders
     $borderLayer->addLayer(1, $hBorder, 0, 0);
     $borderLayer->addLayer(1, $hBorder, 0, 0, 'LB');
     $borderLayer->addLayer(1, $vBorder, 0, 0);
     $borderLayer->addLayer(1, $vBorder, 0, 0, 'RT');
     // Add Footer
     $footerLayer->addLayer(1, $footerBird, 0, 0, 'MB');
     $footerLayer->addLayer(1, $footerFrom, $fromFontSize * 5.5, $fromFontSize * 5, 'RM');
     // Create Image
     $bgLayer->addLayer(1, $footerLayer);
     $bgLayer->addLayer(2, $toLayer);
     $bgLayer->addLayer(2, $msgLayer);
     $bgLayer->addLayer(3, $borderLayer);
     // Resize
     $bgLayer->resizeInPixel(440, null, true);
     return $bgLayer;
 }