watermark() public method

public watermark ( $watermark, $position = 'bottomright' )
Example #1
0
 /**
  * Image caching
  *
  * Resize & cache image into the file system. Returns the template image if product image is not exists
  * At this time supports JPG images only
  *
  * @param mixed $name
  * @param int $user_id
  * @param int $width Resizing width
  * @param int $height Resizing height
  * @param bool $watermarked
  * @param bool $overwrite
  * @return string Cached Image URL
  */
 public function image($name, $user_id, $width, $height, $watermarked = false, $overwrite = false)
 {
     $storage = DIR_STORAGE . $user_id . DIR_SEPARATOR . $name . '.' . ALLOWED_IMAGE_EXTENSION;
     $cache = DIR_IMAGE . 'cache' . DIR_SEPARATOR . $user_id . DIR_SEPARATOR . $name . '-' . $width . '-' . $height . '.' . ALLOWED_IMAGE_EXTENSION;
     $watermark = DIR_IMAGE . 'common' . DIR_SEPARATOR . 'watermark.png';
     $cached_url = ($this->_request->getHttps() ? HTTPS_IMAGE_SERVER : HTTP_IMAGE_SERVER) . 'cache' . DIR_SEPARATOR . $user_id . DIR_SEPARATOR . $name . '-' . $width . '-' . $height . '.' . ALLOWED_IMAGE_EXTENSION;
     // Force reset
     if ($overwrite) {
         unlink($cache);
     }
     // If image is cached
     if (file_exists($cache)) {
         return $cached_url;
         // If image not cached
     } else {
         // Create directories by path if not exists
         $directories = explode(DIR_SEPARATOR, $cache);
         $path = '';
         foreach ($directories as $directory) {
             $path .= DIR_SEPARATOR . $directory;
             if (!is_dir($path) && false === strpos($directory, '.')) {
                 mkdir($path, 0755);
             }
         }
         // Prepare new image
         $image = new Image($storage);
         $image->resize($width, $height);
         if ($watermarked) {
             $image->watermark($watermark);
         }
         $image->save($cache);
     }
     return $cached_url;
 }
function upload()
{
    $path = "./uploads/";
    //设置图片上传路径
    $up = new FileUpload($path);
    //创建文件上传类对象
    if ($up->upload('pic')) {
        //上传图片
        $filename = $up->getFileName();
        //获取上传后的图片名
        $img = new Image($path);
        //创建图像处理类对象
        $img->thumb($filename, 300, 300, "");
        //将上传的图片都缩放至在300X300以内
        $img->thumb($filename, 80, 80, "icon_");
        //缩放一个80x80的图标,使用icon_作前缀
        $img->watermark($filename, "logo.gif", 5, "");
        //为上传的图片加上图片水印
        return array(true, $filename);
        //如果成功返回成功状态和图片名称
    } else {
        return array(false, $up->getErrorMsg());
        //如果失败返回失败状态和错误消息
    }
}
Example #3
0
 /**
  * Image caching
  *
  * Resize & cache image into the file system. Returns the template image if product image is not exists
  *
  * @param mixed $name
  * @param int $user_id
  * @param int $width Resizing width
  * @param int $height Resizing height
  * @param bool $watermarked
  * @param bool $overwrite
  * @param bool $best_fit
  * @return string Cached Image URL
  */
 public function image($name, $user_id, $width, $height, $watermarked = false, $overwrite = false, $best_fit = false)
 {
     $storage = DIR_STORAGE . $user_id . DIR_SEPARATOR . $name . '.' . STORAGE_IMAGE_EXTENSION;
     $cache = DIR_IMAGE . 'cache' . DIR_SEPARATOR . $user_id . DIR_SEPARATOR . $name . '-' . (int) $best_fit . '-' . $width . '-' . $height . '.' . STORAGE_IMAGE_EXTENSION;
     $watermark_black = DIR_IMAGE . 'common' . DIR_SEPARATOR . 'watermark-black.png';
     $watermark_white = DIR_IMAGE . 'common' . DIR_SEPARATOR . 'watermark-white.png';
     $cached_url = URL_BASE . 'image' . DIR_SEPARATOR . 'cache' . DIR_SEPARATOR . $user_id . DIR_SEPARATOR . $name . '-' . (int) $best_fit . '-' . $width . '-' . $height . '.' . STORAGE_IMAGE_EXTENSION;
     // Force reset
     if ($overwrite && file_exists($overwrite)) {
         unlink($cache);
     }
     // If image is cached
     if (file_exists($cache)) {
         return $cached_url;
         // If image not cached
     } else {
         // Create directories by path if not exists
         $directories = explode(DIR_SEPARATOR, $cache);
         $path = '';
         foreach ($directories as $directory) {
             $path .= DIR_SEPARATOR . $directory;
             if (!is_dir($path) && false === strpos($directory, '.')) {
                 mkdir($path, 0755);
             }
         }
         // Prepare new image
         $image = new Image($storage);
         $image->resize($width, $height, 1, false, $best_fit);
         if ($watermarked) {
             $average = new Imagick($storage);
             $average->resizeImage(1, 1, Imagick::FILTER_POINT, 0);
             $pixel = $average->getImagePixelColor(1, 1);
             $color = $pixel->getColor();
             $brightness = (0.299 * $color['r'] + 0.587 * $color['g'] + 0.114 * $color['b']) * 100 / 255;
             if ($brightness < 25) {
                 $image->watermark($watermark_white);
             } else {
                 $image->watermark($watermark_black);
             }
         }
         $image->save($cache);
     }
     return $cached_url;
 }
 public function resize($filename, $width, $height)
 {
     if (!file_exists(DIR_IMAGE . $filename) || !is_file(DIR_IMAGE . $filename)) {
         return;
     }
     $info = pathinfo($filename);
     $extension = $info['extension'];
     $old_image = $filename;
     $new_image = 'cache/' . utf8_substr($filename, 0, utf8_strrpos($filename, '.')) . '-' . $width . 'x' . $height . '.' . $extension;
     if (!file_exists(DIR_IMAGE . $new_image) || filemtime(DIR_IMAGE . $old_image) > filemtime(DIR_IMAGE . $new_image)) {
         $path = '';
         $directories = explode('/', dirname(str_replace('../', '', $new_image)));
         foreach ($directories as $directory) {
             $path = $path . '/' . $directory;
             if (!file_exists(DIR_IMAGE . $path)) {
                 @mkdir(DIR_IMAGE . $path, 0777);
             }
         }
         list($width_orig, $height_orig) = getimagesize(DIR_IMAGE . $old_image);
         if ($width_orig != $width || $height_orig != $height) {
             $image = new Image(DIR_IMAGE . $old_image);
             $image->resize($width, $height);
             // tokoonline
             $watermark_path = str_replace("\\", '/', DIR_IMAGE) . 'watermark.png';
             if ($width > 100 || $height > 100 and strpos($old_image, 'banner') === false and file_exists($watermark_path)) {
                 $image->watermark($watermark_path, 'center');
             }
             $image->save(DIR_IMAGE . $new_image);
         } else {
             copy(DIR_IMAGE . $old_image, DIR_IMAGE . $new_image);
         }
     }
     if (isset($this->request->server['HTTPS']) && ($this->request->server['HTTPS'] == 'on' || $this->request->server['HTTPS'] == '1')) {
         return HTTPS_IMAGE . $new_image;
     } else {
         return HTTP_IMAGE . $new_image;
     }
 }
Example #5
0
 public function resizenodimension($filename, $width, $height, $type = "")
 {
     if (!file_exists(DIR_IMAGE . $filename) || !is_file(DIR_IMAGE . $filename)) {
         return;
     }
     $info = pathinfo($filename);
     $extension = $info['extension'];
     $old_image = $filename;
     $new_image = 'cache/' . utf8_substr($filename, 0, utf8_strrpos($filename, '.')) . '-' . $width . 'x' . $height . $type . '.' . $extension;
     if (!file_exists(DIR_IMAGE . $new_image) || filemtime(DIR_IMAGE . $old_image) > filemtime(DIR_IMAGE . $new_image)) {
         $path = '';
         $directories = explode('/', dirname(str_replace('../', '', $new_image)));
         foreach ($directories as $directory) {
             $path = $path . '/' . $directory;
             if (!file_exists(DIR_IMAGE . $path)) {
                 @mkdir(DIR_IMAGE . $path, 0777);
             }
         }
         list($width_orig, $height_orig) = getimagesize(DIR_IMAGE . $old_image);
         if ($width_orig != $width || $height_orig != $height) {
             $image = new Image(DIR_IMAGE . $old_image);
             // Bukatoko
             if ($width > 400 || $height > 400) {
                 $image->watermark(DIR_IMAGE . 'data/watermark/watermark.png', 'center');
             }
             $image->resize($width, $height, $type);
             $image->save(DIR_IMAGE . $new_image);
         } else {
             copy(DIR_IMAGE . $old_image, DIR_IMAGE . $new_image);
         }
     }
     if (isset($this->request->server['HTTPS']) && ($this->request->server['HTTPS'] == 'on' || $this->request->server['HTTPS'] == '1')) {
         return $this->config->get('config_ssl') . 'image/' . $new_image;
     } else {
         return $this->config->get('config_url') . 'image/' . $new_image;
     }
 }
Example #6
0
 public function resize($filename, $width, $height)
 {
     if (!is_file(DIR_IMAGE . $filename)) {
         return;
     }
     $extension = pathinfo($filename, PATHINFO_EXTENSION);
     $old_image = $filename;
     $new_image = 'cache/' . utf8_substr($filename, 0, utf8_strrpos($filename, '.')) . '-' . $width . 'x' . $height . '.' . $extension;
     if (!is_file(DIR_IMAGE . $new_image) || filectime(DIR_IMAGE . $old_image) > filectime(DIR_IMAGE . $new_image)) {
         $path = '';
         $directories = explode('/', dirname(str_replace('../', '', $new_image)));
         foreach ($directories as $directory) {
             $path = $path . '/' . $directory;
             if (!is_dir(DIR_IMAGE . $path)) {
                 @mkdir(DIR_IMAGE . $path, 0777);
             }
         }
         list($width_orig, $height_orig) = getimagesize(DIR_IMAGE . $old_image);
         if ($width_orig != $width || $height_orig != $height) {
             $image = new Image(DIR_IMAGE . $old_image);
             //超过500就添加水印
             if ($width > 500 || $height > 500) {
                 $image->watermark(DIR_IMAGE . 'watermark.png', 'center');
             }
             $image->resize($width, $height);
             $image->save(DIR_IMAGE . $new_image);
         } else {
             copy(DIR_IMAGE . $old_image, DIR_IMAGE . $new_image);
         }
     }
     if ($this->request->server['HTTPS']) {
         return $this->config->get('config_ssl') . 'image/' . $new_image;
     } else {
         return $this->config->get('config_url') . 'image/' . $new_image;
     }
 }
Example #7
0
 public function upload()
 {
     $this->load->language('common/filemanager');
     $json = array();
     if (isset($this->request->post['directory'])) {
         if (isset($this->request->files['image']) && $this->request->files['image']['tmp_name']) {
             $filename = basename(html_entity_decode($this->request->files['image']['name'], ENT_QUOTES, 'UTF-8'));
             if (strlen($filename) < 3 || strlen($filename) > 255) {
                 $json['error'] = $this->language->get('error_filename');
             }
             $directory = rtrim(DIR_IMAGE . 'data/' . str_replace('../', '', $this->request->post['directory']), '/');
             if (!is_dir($directory)) {
                 $json['error'] = $this->language->get('error_directory');
             }
             if ($this->request->files['image']['size'] > 500000) {
                 $json['error'] = $this->language->get('error_file_size');
             }
             $allowed = array('image/jpeg', 'image/pjpeg', 'image/png', 'image/x-png', 'image/gif', 'application/x-shockwave-flash');
             if (!in_array($this->request->files['image']['type'], $allowed)) {
                 $json['error'] = $this->language->get('error_file_type');
             }
             $allowed = array('.jpg', '.jpeg', '.gif', '.png', '.flv');
             if (!in_array(strtolower(strrchr($filename, '.')), $allowed)) {
                 $json['error'] = $this->language->get('error_file_type');
             }
             if ($this->request->files['image']['error'] != UPLOAD_ERR_OK) {
                 $json['error'] = 'error_upload_' . $this->request->files['image']['error'];
             }
         } else {
             $json['error'] = $this->language->get('error_file');
         }
     } else {
         $json['error'] = $this->language->get('error_directory');
     }
     if (!$this->user->hasPermission('modify', 'common/filemanager')) {
         $json['error'] = $this->language->get('error_permission');
     }
     if (!isset($json['error'])) {
         if (@move_uploaded_file($this->request->files['image']['tmp_name'], $directory . '/' . $filename)) {
             /**
              * 判断是否需要加水印
              */
             $watermark = isset($this->request->post['watermark']) ? $this->request->post['watermark'] : '';
             if (!empty($watermark)) {
                 $this->load->model('tool/image');
                 $image = new Image($directory . '/' . $filename);
                 $image->watermark(DIR_IMAGE . 'watermark.png', $watermark);
                 $image->save($directory . '/' . $filename);
             }
             $json['success'] = $this->language->get('text_uploaded');
         } else {
             $json['error'] = $this->language->get('error_uploaded');
         }
     }
     $this->response->setOutput(json_encode($json));
 }
 /**
  * Получает путь к картинке и накладывает водяные знаки
  *
  * @param	string
  * @return	string
  */
 private function applyWatermark($filename)
 {
     if (!empty($filename)) {
         $info = pathinfo($filename);
         $wmfile = DIR_IMAGE . $this->config->get('exchange1c_watermark');
         if (is_file($wmfile)) {
             $extension = $info['extension'];
             $minfo = getimagesize($wmfile);
             $image = new Image(DIR_IMAGE . $filename);
             $image->watermark($wmfile, 'center', $minfo['mime']);
             $new_image = utf8_substr($filename, 0, utf8_strrpos($filename, '.')) . '_watermark.' . $extension;
             $image->save(DIR_IMAGE . $new_image);
             return $new_image;
         } else {
             return $filename;
         }
     } else {
         return 'no_image.jpg';
     }
 }
Example #9
0
/**
 * 水印添加
 *
 * @param $source 原图片路径
 * @param $target 生成水印图片途径,默认为空,覆盖原图
 */
function watermark($source, $target = '')
{
    static $image = null;
    if (empty($source)) {
        return $source;
    }
    if (!extension_loaded('gd') || strpos($source, '://')) {
        return $source;
    }
    if (!$target) {
        $target = $source;
    }
    if ($image == null) {
        $image = new Image(0);
    }
    $image->watermark($source, $target);
    return $target;
}
Example #10
0
 /**
  * 附件上传方法
  *
  * @param $field 上传字段
  * @param $alowexts 允许上传类型
  * @param $maxsize 最大上传大小
  * @param $overwrite 是否覆盖原有文件
  * @param $thumb_setting 缩略图设置
  * @param $watermark_enable 是否添加水印
  */
 public function upload($field, $alowexts = '', $maxsize = 0, $overwrite = 0, $thumb_setting = array(), $watermark_enable = 1)
 {
     if (!isset($_FILES[$field])) {
         // 判断附件上传字段是否为空
         $this->error = UPLOAD_ERR_OK;
         return false;
     }
     if (empty($alowexts) || $alowexts == '') {
         // 判断限制的类型
         $alowexts = C('attachment', 'allowext');
     }
     $fn = isset($_GET['CKEditorFuncNum']) ? $_GET['CKEditorFuncNum'] : '1';
     $this->field = $field;
     $this->savepath = $this->upload_root . date('Y/md/');
     $this->alowexts = $alowexts;
     $this->maxsize = $maxsize;
     $this->overwrite = $overwrite;
     $uploadfiles = array();
     $description = isset($GLOBALS[$field . '_description']) ? $GLOBALS[$field . '_description'] : array();
     if (is_array($_FILES[$field]['error'])) {
         $this->uploads = count($_FILES[$field]['error']);
         foreach ($_FILES[$field]['error'] as $key => $error) {
             if ($error === UPLOAD_ERR_NO_FILE) {
                 continue;
             }
             if ($error !== UPLOAD_ERR_OK) {
                 $this->error = $error;
                 return false;
             }
             $uploadfiles[$key] = array('tmp_name' => $_FILES[$field]['tmp_name'][$key], 'name' => $_FILES[$field]['name'][$key], 'type' => $_FILES[$field]['type'][$key], 'size' => $_FILES[$field]['size'][$key], 'error' => $_FILES[$field]['error'][$key], 'description' => $description[$key], 'fn' => $fn);
         }
     } else {
         $this->uploads = 1;
         if (!$description) {
             $description = '';
         }
         $uploadfiles[0] = array('tmp_name' => $_FILES[$field]['tmp_name'], 'name' => $_FILES[$field]['name'], 'type' => $_FILES[$field]['type'], 'size' => $_FILES[$field]['size'], 'error' => $_FILES[$field]['error'], 'description' => $description, 'fn' => $fn);
     }
     if (!Folder::mk($this->savepath) && !is_dir($this->savepath)) {
         $this->error = '8';
         return false;
     }
     @chmod($this->savepath, 0755);
     if (!is_writeable($this->savepath)) {
         $this->error = '9';
         return false;
     }
     $aids = array();
     foreach ($uploadfiles as $k => $file) {
         $fileext = File::get_suffix($file['name']);
         if ($file['error'] != 0) {
             $this->error = $file['error'];
             return false;
         }
         if (!preg_match("/^(" . $this->alowexts . ")\$/", $fileext)) {
             $this->error = '10';
             return false;
         }
         if ($this->maxsize && $file['size'] > $this->maxsize) {
             $this->error = '11';
             return false;
         }
         if (!$this->isuploadedfile($file['tmp_name'])) {
             $this->error = '12';
             return false;
         }
         $temp_filename = $this->getname($fileext);
         $savefile = $this->savepath . $temp_filename;
         $savefile = preg_replace("/(php|phtml|php3|php4|jsp|exe|dll|asp|cer|asa|shtml|shtm|aspx|asax|cgi|fcgi|pl)(\\.|\$)/i", "_\\1\\2", $savefile);
         $filepath = preg_replace(String::addslashes("|^" . $this->upload_root . "|"), "", $savefile);
         if (!$this->overwrite && file_exists($savefile)) {
             continue;
         }
         $upload_func = $this->upload_func;
         if (@$upload_func($file['tmp_name'], $savefile)) {
             $this->uploadeds++;
             @chmod($savefile, 0755);
             @unlink($file['tmp_name']);
             $file['name'] = iconv("utf-8", CHARSET, $file['name']);
             $uploadedfile = array('filename' => $file['name'], 'filepath' => $filepath, 'filesize' => $file['size'], 'fileext' => $fileext, 'fn' => $file['fn']);
             if ($this->is_image($file['name'])) {
                 $thumb_enable = is_array($thumb_setting) && ($thumb_setting[0] > 0 || $thumb_setting[1] > 0) ? 1 : 0;
                 $image = new Image($thumb_enable);
                 if ($thumb_enable) {
                     $image->thumb($savefile, '', $thumb_setting[0], $thumb_setting[1]);
                 }
                 if ($watermark_enable) {
                     $image->watermark($savefile, $savefile);
                 }
             }
             $aids[] = $this->add($uploadedfile);
         }
     }
     return $aids;
 }
 public function upload()
 {
     //if($_POST['swf_auth_key']!= sysmd5($_POST['PHPSESSID'].$this->userid)) $this->ajaxReturn(0,'1-'.$_POST['PHPSESSID'],0);
     import("@.ORG.UploadFile");
     $upload = new UploadFile();
     //$upload->supportMulti = false;
     //设置上传文件大小
     $upload->maxSize = $this->Config['attach_maxsize'];
     $upload->autoSub = true;
     $upload->subType = 'date';
     $upload->dateFormat = 'Ym';
     //设置上传文件类型
     $upload->allowExts = explode(',', $this->Config['attach_allowext']);
     //设置附件上传目录
     $upload->savePath = UPLOAD_PATH;
     //设置上传文件规则
     $upload->saveRule = uniqid;
     //删除原图
     $upload->thumbRemoveOrigin = true;
     if (!$upload->upload()) {
         $this->ajaxReturn(0, $upload->getErrorMsg(), 0);
     } else {
         //取得成功上传的文件信息
         $uploadList = $upload->getUploadFileInfo();
         if ($_REQUEST['addwater']) {
             //$this->Config['watermark_enable']  $_REQUEST['addwater']
             import("@.ORG.Image");
             Image::watermark($uploadList[0]['savepath'] . $uploadList[0]['savename'], '', $this->Config);
         }
         $imagearr = explode(',', 'jpg,gif,png,jpeg,bmp,ttf,tif');
         $data = array();
         $model = M('Attachment');
         //保存当前数据对象
         $data['moduleid'] = $_REQUEST['moduleid'];
         $data['catid'] = 0;
         $data['userid'] = $_REQUEST['userid'];
         $data['filename'] = $uploadList[0]['name'];
         $data['filepath'] = __ROOT__ . substr($uploadList[0]['savepath'] . strtolower($uploadList[0]['savename']), 1);
         $data['filesize'] = $uploadList[0]['size'];
         $data['fileext'] = strtolower($uploadList[0]['extension']);
         $data['isimage'] = in_array($data['fileext'], $imagearr) ? 1 : 0;
         $data['isthumb'] = intval($_REQUEST['isthumb']);
         $data['createtime'] = time();
         $data['uploadip'] = get_client_ip();
         $aid = $model->add($data);
         $returndata['aid'] = $aid;
         $returndata['filepath'] = $data['filepath'];
         $returndata['fileext'] = $data['fileext'];
         $returndata['isimage'] = $data['isimage'];
         $returndata['filename'] = $data['filename'];
         $returndata['filesize'] = $data['filesize'];
         $this->ajaxReturn($returndata, L('upload_ok'), '1');
     }
 }
Example #12
0
 /**
  * Gets the media item file in the correct format and passes it through PHP
  *
  * @param array $item
  * @param string $format
  * @return bool
  */
 protected function displayFormat(array $item, $format)
 {
     if ($format == 'thumb') {
         $file = $item['path_fs'] . '/' . $item['thumbnail'];
     } else {
         if ($item['type'] == 'image') {
             /**
              * Get either full or medium sized image, however no large than
              * the specified max width.
              */
             $imgPath = $item['path_fs'] . '/' . $item['filename'];
             if (is_file($imgPath)) {
                 list($imgWidth) = getimagesize($imgPath);
                 $maxWidth = $this->_config->get('media/max_image_width');
                 if ($format == 'medium') {
                     // Display the medium size image no wider than the themes content
                     try {
                         $contentWidth = $this->_theme->getDetail('contentWidth');
                     } catch (Theme_DetailNoExist $e) {
                         $contentWidth = 500;
                     }
                     if ($contentWidth < $maxWidth) {
                         $maxWidth = $contentWidth;
                     }
                 }
                 // Resize and add watermark if needed
                 $wmPath = $this->_zula->getDir('uploads') . '/media/wm.png';
                 if ($imgWidth <= $maxWidth && !is_file($wmPath)) {
                     $file = $imgPath;
                 } else {
                     $file = $this->_zula->getDir('tmp') . "/media/max{$maxWidth}-" . pathinfo($item['filename'], PATHINFO_BASENAME);
                     if (!is_file($file)) {
                         $image = new Image($imgPath);
                         $image->resize($maxWidth, null, false);
                         if (is_file($wmPath)) {
                             $image->watermark($wmPath, $this->_config->get('media/wm_position'));
                         }
                         $image->save($file);
                     }
                 }
             }
         } else {
             if ($format == 'stream' && $item['type'] == 'audio' || $item['type'] == 'video') {
                 $file = $item['path_fs'] . '/' . $item['filename'];
             }
         }
     }
     if (isset($file) && is_file($file)) {
         zula_readfile($file);
         return false;
     } else {
         if ($format == 'thumb') {
             zula_readfile(zula_get_icon('misc/missing_' . $item['type'], null, false));
             return false;
         } else {
             if ($item['type'] == 'image') {
                 // Display default icon
                 zula_readfile(zula_get_icon('misc/no_file', null, false));
                 return false;
             } else {
                 throw new Module_ControllerNoExist();
             }
         }
     }
 }
Example #13
0
<?php

require_once 'image.php';
if (isset($_POST['submit'])) {
    $imagepath = 'D:/www/phpweb20/public/test/image/' . $_FILES['image']['name'];
    move_uploaded_file($_FILES['image']['tmp_name'], $imagepath);
    $image = new Image($imagepath);
    $image->thumb(400, 400);
    $image->watermark();
}
?>

<form action="" method="post" enctype="multipart/form-data">
	<input type="file" name="image" /><br />
	<input type="submit" name="submit" value="Submit!" />
</form>
Example #14
0
 public function actionAtme()
 {
     $this->pageTitle = '最爱@我';
     $SAEOAuth = Yii::app()->SAEOAuth;
     $client = $SAEOAuth->getSinaClient();
     $sina_id = $SAEOAuth->getUserID();
     if (empty($sina_id)) {
         $this->actionLogin();
     }
     $sina_info = $client->show_user($sina_id);
     #print_r($sina_info);
     $count = 200;
     $page = 1;
     $ms = array();
     while ($tmp <= 1) {
         $tmp = $client->mentions($page, $count);
         $ms += $tmp;
         $tmp_count = count($tmp);
         $page++;
     }
     $sum = count($ms);
     if (!empty($ms)) {
         foreach ($ms as $one) {
             $user = $one['user'];
             $uid = $user['id'];
             if ($uid == $sina_id) {
                 continue;
             }
             $user_list[$uid] = $user;
             $user_count_list[$uid]++;
         }
     }
     if (!empty($user_count_list)) {
         arsort($user_count_list);
         $size = 10;
         $tmp = array_chunk($user_count_list, $size, true);
         $user_count_list = $tmp[0];
     }
     if (!empty($user_count_list)) {
         foreach ($user_count_list as $uid => $count) {
             $user = $user_list[$uid];
             $sex_count[$user['gender']]++;
             $weibo_count[$user['gender']] += $count;
         }
     }
     //统计
     if (!empty($sex_count)) {
         $gender = $sina_info['gender'];
         $gender_other = $sina_info['gender'] == 'm' ? 'f' : 'm';
         //比例
         $gender_persent = 100 * $sex_count[$gender] / ($sex_count[$gender] + $sex_count[$gender_other]);
     }
     $message = $this->getPersentMessage($gender_persent);
     $random_text = $this->getRandomText();
     if (count($user_count_list) >= 3) {
         foreach ($user_count_list as $uid => $count) {
             $user = $user_list[$uid];
             $text_arr[] = $user['name'];
             if (count($img_arr) < 3) {
                 $img_arr[] = array('img_url' => $user['profile_image_url'], 'name' => $user['name']);
                 $ids_arr[] = $uid;
                 //微博内容
                 $send_weibo_text .= "@{$user[name]} ";
             } else {
                 $text_arr_other[] = $user['name'];
             }
         }
         #include('saedisk.class.php');
         #$SaeDisk = new SaeDisk();
         $file_name = "atme_{$ids_arr[0]}_{$ids_arr[1]}_{$ids_arr[2]}";
         if (0 and $SaeDisk->file_exists($file_name)) {
             $weibo_img = $SaeDisk->getWebUrl($file_name);
         } else {
             Yii::import('application.extensions.image.Image');
             $app_root = Yii::getPathOfAlias('webroot');
             $atme_img = $app_root . '/images/atme.jpg';
             $image_base = new Image($atme_img);
             //实例化SaeImage并取得最大一张图片的大小,稍后用于设定合成后图片的画布大小
             $tmp_path = Yii::app()->runtimePath;
             //写入临时文件
             if (!empty($image_base)) {
                 $new_filename = $tmp_path . '/' . $file_name;
                 $image_base->save($new_filename);
                 if (!empty($img_arr)) {
                     $img_zuobiao = array('0' => array('left' => 188, 'top' => 53), '1' => array('left' => 304, 'top' => 106), '2' => array('left' => 64, 'top' => 138));
                     $text_zuobiao = array('0' => array('left' => 180, 'top' => 40), '1' => array('left' => 300, 'top' => 98), '2' => array('left' => 64, 'top' => 128));
                     $textAttr = array("fontName" => Yii_Font_MicroHei, "fontSize" => 12, "fontColor" => "#333333");
                     foreach ($img_arr as $key => $one) {
                         $name = $one['name'];
                         $img_url = $one['img_url'];
                         $img_data = $this->file_get_contents($img_url);
                         $img_filename = $tmp_path . '/' . md5($img_url);
                         $avatra[] = file_put_contents($img_filename, $img_data);
                         //头像
                         $image_avatra = new Image($img_filename);
                         $zuobiao = $img_zuobiao[$key];
                         $left = $zuobiao['left'];
                         $top = $zuobiao['top'];
                         $image_base->watermark($image_avatra, 100, $left, $top);
                         $zuobiao2 = $text_zuobiao[$key];
                         $image_base->watermarkText($name, 100, $zuobiao2['left'], $zuobiao2['top'], $textAttr);
                         #$image_base->save($new_filename);
                         //文字
                         #$image_name = ImageCreateFromString($name);
                         #ImagePng($image_name);
                         #ImagePng($image,$outfilename);
                     }
                 }
                 $image_base->save($new_filename);
                 #$image_base = new Image($new_filename);
                 $weibo_img = $this->createAbsoluteUrl('image', array('path' => $file_name));
                 #$weibo_img = $SaeDisk->upload_file($file_name,$image_base->file,$attr);
             }
         }
         //转发到微博
         if (!empty($_GET['sendWeibo'])) {
             unset($_GET['sendWeibo']);
             $status = "最爱at我的前三名是:{$send_weibo_text} 谢谢关心和支持!";
             $length1 = mb_strlen($status, 'UTF8');
             #$status .= ">> 偷偷告诉你们:".$random_text;
             $goto_url = "看看你的:" . $this->createAbsoluteUrl('user/weibo/atme');
             $length2 = mb_strlen($goto_url, 'UTF8');
             $length_other = 140 - $length1 - $length2;
             if (!empty($text_arr_other)) {
                 foreach ($text_arr_other as $name) {
                     $length_name = mb_strlen($name, 'UTF8');
                     $length = mb_strlen($send_weibo_text_other, 'UTF8');
                     if ($length + $length_name > $length_other) {
                         break;
                     }
                     $send_weibo_text_other .= "@{$name} ";
                 }
             }
             $status = $status . $send_weibo_text_other . $goto_url;
             $count = mb_strlen($status, 'UTF8');
             #var_dump($count);
             #var_dump($status);die;
             $rs = $client->upload($status, $weibo_img);
             Yii::app()->user->setFlash('sendWeibo', '转发成功了亲!');
             $this->redirect('/user/weibo/atme');
         }
     }
     $data = array('user_list' => $user_list, 'user_count_list' => $user_count_list, 'sex_count' => $sex_count, 'weibo_count' => $weibo_count, 'message' => $message, 'random_text' => $random_text, 'weibo_img' => $weibo_img);
     $this->render('atme', $data);
 }
 /**
  * Получает путь к картинке и накладывает водяные знаки
  */
 private function applyWatermark($filename, $wm_filename)
 {
     $this->log("==> applyWatermark()", 2);
     $wm_fullname = DIR_IMAGE . $wm_filename;
     $fullname = DIR_IMAGE . $filename;
     if (is_file($wm_fullname) && is_file($fullname)) {
         // Получим расширение файла
         $info = pathinfo($filename);
         $extension = $info['extension'];
         // Создаем объект картинка из водяного знака и получаем информацию о картинке
         $image = new Image($fullname);
         if (version_compare($this->config->get('exchange1c_CMS_version'), '2.0.3.1', '>')) {
             $image->watermark(new Image($wm_fullname));
         } else {
             $image->watermark($wm_fullname);
         }
         // Формируем название для файла с наложенным водяным знаком
         $new_image = utf8_substr($filename, 0, utf8_strrpos($filename, '.')) . '_wm.' . $extension;
         // Сохраняем картинку с водяным знаком
         $image->save(DIR_IMAGE . $new_image);
         $this->log("> Файл с водяным знаком " . $new_image);
         $this->log("[i] Удален старый файл: " . $filename, 2);
         return $new_image;
     } else {
         return $filename;
     }
 }
Example #16
0
}
spl_autoload_register('autoLoader');
global $registry;
App::setUrl();
DEFINE('DESIGNPATH', App::getURLForDesignDirectory());
DEFINE('URL', App::getHost(1) . '/' . LOCAL_CATALOG);
$registry = new registry();
if (!@(include_once ROOTPATH . 'config' . DS . 'settings.php')) {
    include ROOTPATH . 'includes' . DS . 'install.php';
    die;
}
$registry->router = new Router($registry);
try {
    $registry->db = Db::getInstance($Config['database']);
} catch (Exception $e) {
    echo $e->getMessage();
    die;
}
$registry->session = new session($registry);
$registry->loader = new Loader($registry);
$registry->core = new Core($registry);
$layer = $registry->loader->getCurrentLayer();
$path = ROOTPATH . 'design' . DS . '_gallery' . DS . '_orginal' . DS . $_GET['image'];
if (is_file($path)) {
    $objImage = new Image($path);
    if (isset($layer['watermark']) && !is_null($layer['watermark']) && strlen($layer['watermark']) > 4) {
        $watermark = new Image(ROOTPATH . 'design/_images_frontend/core/logos/' . $layer['watermark']);
        $objImage->watermark($watermark);
    }
    $objImage->display();
}