Пример #1
0
 private function watermark($data = array())
 {
     $this->load->library('files/files');
     $mark_text = isset($data['text']) ? $data['text'] : Settings::get('site_name');
     $font_color = isset($data['font_color']) ? $data['font_color'] : 'ffffff';
     $opacity = isset($data['opacity']) ? (int) $data['opacity'] : 100;
     $font_size = isset($data['font_size']) ? (int) $data['font_size'] : 12;
     $files = $data['files'];
     $font_path = './' . SHARED_ADDONPATH . 'modules/watermark/fonts/Gabrielle.ttf';
     if (is_array($files) && count($files) > 0) {
         foreach ($files as $file) {
             $filedata = Files::get_file($file);
             if ($filedata['status'] === TRUE) {
                 $dirpath = FCPATH . '/uploads/default/files/';
                 $source = $dirpath . $filedata['data']->filename;
                 $imageLayer = ImageWorkshop::initFromPath($source);
                 //var_dump($imageLayer);exit;
                 $textLayer = ImageWorkshop::initTextLayer($mark_text, $font_path, $font_size, $font_color, $data['rotation']);
                 $textLayer->opacity($opacity);
                 $imageLayer->addLayerOnTop($textLayer, 12, 12, $data['position']);
                 $image = $imageLayer->getResult();
                 $imageLayer->save($dirpath, $filedata['data']->filename, false, null, 100);
                 $wm_data = array('file_id' => $filedata['data']->id, 'folder_id' => $filedata['data']->folder_id);
                 $this->watermark_m->insert($wm_data);
             }
         }
         $this->session->set_flashdata('success', lang('watermark:submit_success'));
         redirect('admin/watermark');
     } else {
         $this->session->set_flashdata('error', lang('watermark:no_files_remaining'));
         redirect('admin/watermark');
     }
 }
Пример #2
0
 protected function _applyWaterMark($image)
 {
     $iaCore =& $this->iaCore;
     if (!$iaCore->get('watermark')) {
         return $image;
     }
     $watermark_positions = array('top_left' => 'TL', 'top_center' => 'MT', 'top_right' => 'RT', 'middle_left' => 'LM', 'middle_center' => 'MM', 'middle_right' => 'RM', 'bottom_left' => 'LB', 'bottom_center' => 'MB', 'bottom_right' => 'RB');
     $position = $iaCore->get('watermark_position');
     $position = $position && array_key_exists($position, $watermark_positions) ? $watermark_positions[$position] : $watermark_positions['bottom_right'];
     if ('text' == $iaCore->get('watermark_type')) {
         $watermark = ImageWorkshop::initTextLayer($iaCore->get('watermark_text', 'Subrion CMS'), IA_INCLUDES . 'phpimageworkshop/Fonts/arial.ttf', $iaCore->get('watermark_text_size', 11), $iaCore->get('watermark_text_color', '#FFFFFF'));
         $image->addLayerOnTop($watermark, 10, 10, $position);
     } else {
         $watermarkFile = $iaCore->get('watermark_image') ? IA_UPLOADS . $iaCore->get('watermark_image') : IA_TEMPLATES . $iaCore->get('tmpl') . IA_DS . 'img' . IA_DS . 'watermark.png';
         if (file_exists($watermarkFile) && !is_dir($watermarkFile)) {
             $watermark = ImageWorkshop::initFromPath($watermarkFile);
             $watermark->opacity(70);
             $image->addLayerOnTop($watermark, 10, 10, $position);
         }
     }
     return $image;
 }
Пример #3
0
 /**
  * Summary.
  *
  * @since  0.9.0
  * @see
  *
  * @param \Symfony\Component\HttpFoundation\Request $request
  * @param \Silex\Application                        $app
  *
  * @return JsonResponse
  * @author nguyenvanduocit
  */
 public function generate(Request $request, Application $app)
 {
     $backgroundId = $request->get('backgroundId');
     $resultObject = new AttachmentResponse();
     if (array_key_exists($backgroundId, $this->memeList)) {
         $text = $request->get('text');
         $meme = $this->memeList[$backgroundId];
         $fileName = md5(mt_rand(1, 20)) . '.jpg';
         $mainLayer = ImageWorkshop::initFromPath($meme['src']);
         $textPaths = explode(';', $text);
         foreach ($textPaths as $index => $text) {
             if (array_key_exists($index, $meme['position'])) {
                 $position = $meme['position'][$index];
             } else {
                 $lastPostion = count($meme['position']) - 1;
                 $position = $meme['position'][$lastPostion];
             }
             $textLayer = ImageWorkshop::initTextLayer($text, APP_DIR . '/Asset/font/OpenSans-Bold.ttf', $meme['font']['size'], $meme['font']['color'], 0, null);
             if ($textLayer->getWidth() >= $mainLayer->getWidth()) {
                 $textLayer->resizeInPixel($mainLayer->getWidth() - 100, NULL, TRUE);
             }
             if ($position === 'top') {
                 $y = 0 + 20;
             } else {
                 $y = $mainLayer->getHeight() - $textLayer->getHeight() - 20;
             }
             $x = $mainLayer->getWidth() / 2 - $textLayer->getWidth() / 2;
             $mainLayer->addLayer($index, $textLayer, $x, $y);
         }
         $mainLayer->save($this->outputDir, $fileName);
         $resultObject->setImageUrl('http://slackbotapi.senviet.org/web/public/meme/' . $fileName . '?rand=' . uniqid('rand', FALSE));
     } else {
         $resultObject->setImageUrl('http://slackbotapi.senviet.org/web/public/meme/list.jpg');
     }
     return new JsonResponse($resultObject);
 }
Пример #4
0
 /**
  * Test initTextLayer
  */
 public function testInitTextLayer()
 {
     $layer = ImageWorkshop::initTextLayer('Hello John Doe !', __DIR__ . static::FONT_SAMPLE_PATH, 15, 'ff0000', 10, 'ffffff');
     $this->assertTrue(is_object($layer) === true, 'Expect $layer to be an object');
     $this->assertTrue(get_class($layer) === 'PHPImageWorkshop\\Core\\ImageWorkshopLayer', 'Expect $layer to be an ImageWorkshopLayer object');
 }
Пример #5
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;
 }
Пример #6
0
function watermark($text = '大神蒜', $file, $newdir, $newfile)
{
    //   error_reporting(1);
    empty($text) ? $text : ($text = '大神蒜');
    //设置水印文字
    $textLayer = ImageWorkshop::initTextLayer($text, __DIR__ . '/ImageWorkshop-2.0.6/tests/Resources/fonts/yahei.ttf', 13, 'ffffff', 0);
    $pinguLayer = ImageWorkshop::initFromPath($file);
    $pinguLayer->resizeInPixel(400, 400, true, 0, 0, 'MM');
    $pinguLayer->addLayerOnTop($textLayer, 12, 12, "LB");
    $pinguLayer->save($newdir, $newfile, true, '000000', 95);
    // We chose to show a JPG with a quality of 95%
    @unlink($file);
}
Пример #7
0
<?php

require_once __DIR__ . '/vendor/autoload.php';
use PHPImageWorkshop\ImageWorkshop;
$norwayLayer = ImageWorkshop::initFromPath('/img/sample.jpg');
// This is the text layer
$textLayer = ImageWorkshop::initTextLayer('© PHP Image Workshop', '/fonts/arial.ttf', 11, 'ffffff', 0);
// We add the text layer 12px from the Left and 12px from the Bottom ("LB") of the norway layer:
$norwayLayer->addLayerOnTop($textLayer, 12, 12, "LB");
$image = $norwayLayer->getResult();
header('Content-type: image/jpeg');
imagejpeg($image, null, 95);
// We chose to show a JPG with a quality of 95%
exit;
echo 'one';