예제 #1
0
파일: fmr.php 프로젝트: romlg/cms36
 function Edit()
 {
     global $watermark_cfg;
     $ref = $GLOBALS['_SESSION']['ref'];
     $FF = get('FF', '', 'gp');
     $offset = get('offset', 0, 'gp');
     $limit = get('limit', 10, 'gp');
     $dir = get('dir', '', 'gp');
     $sort = get('sort', 'name', 'gp');
     $image = get('image', '', 'gp');
     $aimage = get('aimage', '', 'gp');
     $cur_image = get('cur_image', '', 'gp');
     $fsort = get('file_sort', '', 'gp');
     $fldname = get('field', '', 'gp');
     $page = get('page', '', 'gp');
     $fld = get('fld', array(), 'gp');
     $whatdo = get('whatdo', '', 'gp');
     $formname = get('formname', '', 'gp');
     // определим с какого скрипта вызов
     $whatpage = basename($_SERVER['PHP_SELF']);
     if ($whatpage == 'index.php') {
         $whatpage = "";
     }
     $fullreferer = NULL;
     $info = getimagesize($GLOBALS['_FILES']['file']['tmp_name']);
     $allowed_formats = array(1 => FILE_GIF, 2 => FILE_JPEG, 3 => FILE_PNG);
     # если файл не закачался, выдать сообщение, чтобы проверили размер файла
     if ($_FILES['file']['name'] && !$_FILES['file']['size']) {
         Header("Location: /admin/" . $whatpage . "?FF=" . $FF . "&formname=" . $formname . "&offset=" . $offset . "&limit=" . $limit . "&dir=" . $dir . "&sort=" . $sort . "&image=" . $image . "&aimage=" . $aimage . "&cur_image=" . $cur_image . "&file_sort=" . $fsort . "&field=" . $fldname . "&page=" . $page . "&do=" . $whatdo . "&err=3");
     }
     # проверка на расширение
     if (!$this->Allowed($_POST['file'])) {
         Header("Location: /admin/" . $whatpage . "?FF=" . $FF . "&formname=" . $formname . "&offset=" . $offset . "&limit=" . $limit . "&dir=" . $dir . "&sort=" . $sort . "&image=" . $image . "&aimage=" . $aimage . "&cur_image=" . $cur_image . "&file_sort=" . $fsort . "&field=" . $fldname . "&page=" . $page . "&do=" . $whatdo . "&err=4");
     }
     # Надо проверить, что это не CMYK
     if ($info['channels'] == 4) {
         Header("Location: /admin/" . $whatpage . "?FF=" . $FF . "&formname=" . $formname . "&offset=" . $offset . "&limit=" . $limit . "&dir=" . $dir . "&sort=" . $sort . "&image=" . $image . "&aimage=" . $aimage . "&cur_image=" . $cur_image . "&file_sort=" . $fsort . "&field=" . $fldname . "&page=" . $page . "&do=" . $whatdo . "&err=2");
     }
     # Закачанный файл
     $quality = @array_shift(@mysql_fetch_row(@mysql_query('SELECT value FROM params WHERE name="resize_quality"')));
     if (!$quality) {
         $quality = 85;
     }
     if ($GLOBALS['_FILES']['file']['size']) {
         $fname = $this->GetUploadedFile($GLOBALS['_FILES']['file']['tmp_name'], $GLOBALS['_FILES']['file']['name'], FILES_DIR . $dir, $GLOBALS['_POST']['resample'], $quality);
     }
     $fname = FILES_DIR . '/' . $dir . '/' . $fname;
     $info = getimagesize($fname);
     if ($_POST['watermark'] && class_exists('RWatermark') && $watermark_cfg && in_array($info[2], array_keys($allowed_formats)) && is_file($watermark_cfg['watermark']) && ($info[0] > $watermark_cfg['width'] || $info[1] > $watermark_cfg['height'])) {
         $handle = new RWatermark($allowed_formats[$info[2]], $fname);
         $handle->SetPosition("CM");
         $handle->SetTransparentColor(255, 0, 255);
         $handle->SetTransparency($watermark_cfg['transparency'] ? $watermark_cfg['transparency'] : 60);
         $handle->AddWatermark(FILE_PNG, $watermark_cfg['watermark']);
         //$file=GetPureName($GLOBALS['_FILES']['file']['name']);
         if ($info[2] == 1) {
             imagegif($handle->marked_image, $fname);
         } elseif ($info[2] == 2) {
             imagejpeg($handle->marked_image, $fname, $watermark_cfg['quality'] ? $watermark_cfg['quality'] : 60);
         } elseif ($info[2] == 3) {
             imagepng($handle->marked_image, $fname);
         }
         $handle->Destroy();
     }
     Header("Location: /admin/" . $whatpage . "?FF=" . $FF . "&formname=" . $formname . "&offset=" . $offset . "&limit=" . $limit . "&dir=" . $dir . "&sort=" . $sort . "&image=" . $image . "&aimage=" . $aimage . "&cur_image=" . $cur_image . "&file_sort=" . $fsort . "&field=" . $fldname . "&page=" . $page . "&do=" . $whatdo);
 }
예제 #2
0
파일: fm2.php 프로젝트: romlg/cms36
 function addWaterMark($file, $wmark)
 {
     //проверяем, является ли переданный файл, файлом изображения
     $images = array('jpeg', 'jpg', 'gif', 'png');
     $format = strtolower(substr($file, strrpos($file, '.') + 1));
     if (in_array($format, $images)) {
         $wmark_info = getimagesize($wmark);
         $file_info = getimagesize($file);
         if ($wmark_info[0] > $file_info[0]) {
             $this->waterMark_errors[$file] = "Ширина изображения меньше чем ширина водяного знака";
             return;
         }
         if ($wmark_info[1] > $file_info[1]) {
             $this->waterMark_errors[$file] = "Высота изображения меньше чем высота водяного знака";
             return;
         }
         $handle = new RWatermark($file_info[2], $file);
         if (!isset($this->config['module']['watermark_position'])) {
             $this->config['module']['watermark_position'] = "CM";
         }
         $handle->SetPosition($this->config['module']['watermark_position']);
         $handle->SetTransparentColor(255, 0, 255);
         if (!isset($this->config['module']['watermark_transparency'])) {
             $this->config['module']['watermark_transparency'] = "60";
         }
         $handle->SetTransparency($this->config['module']['watermark_transparency']);
         switch ($wmark_info[2]) {
             case '1':
                 $handle->AddWatermark(FILE_GIF, $wmark);
                 break;
             case '2':
                 $handle->AddWatermark(FILE_JPEG, $wmark);
                 break;
             case '3':
                 $handle->AddWatermark(FILE_PNG, $wmark);
                 break;
         }
         // Определяем примерно, с каким качеством сохранять картинки
         $size = filesize($file);
         if ($size <= '10000') {
             $quality = '90';
         } else {
             if ($size > '10000' && $size <= '30000') {
                 $quality = '90';
             } else {
                 $quality = '85';
             }
         }
         if ($file_info[2] == 1) {
             imagegif($handle->marked_image, $file);
         } elseif ($file_info[2] == 2) {
             imagejpeg($handle->marked_image, $file, $quality);
         } elseif ($file_info[2] == 3) {
             imagepng($handle->marked_image, $file);
         }
         $handle->Destroy();
     }
 }
예제 #3
0
 /**
  * Накладывание водяного знака
  * @param array $fld
  * @param int $id
  * @return array|bool
  */
 function ElemRedactAfter($fld, $id)
 {
     $id = $id ? $id : (int) $_POST['id'];
     if (!$id) {
         return true;
     }
     global $watermark_img, $watermark_position;
     $watermark = (int) get('watermark', 0, 'p');
     if (isset($watermark_img) && !empty($watermark_img) && $watermark) {
         if (!getimagesize($watermark_img)) {
             return array('error' => "Не найден водяной знак " . $watermark_img);
         }
         $row = sql_getRow("SELECT * FROM {$this->elem_table} WHERE id={$id}");
         if (!$row) {
             return array('error' => "Неправильный идентификатор галереи");
         }
         if ($row['image_large']) {
             $file = '..' . $row['image_large'];
             $file = urldecode($file);
             $wmark_info = getimagesize($watermark_img);
             $file_info = getimagesize($file);
             if ($wmark_info[0] > $file_info[0]) {
                 return array('error' => "Ширина изображения меньше чем ширина водяного знака");
             }
             if ($wmark_info[1] > $file_info[1]) {
                 return array('error' => "Высота изображения меньше чем высота водяного знака");
             }
             $copy = file_getUniName($file);
             if (!copy($file, $copy)) {
                 return array('error' => "Ошибка копирования из " . $file . " в " . $copy);
             }
             include_once ENGINE_VERSION . '/admin/modules/fm2/watermark.php';
             $handle = new RWatermark($file_info[2], $copy);
             if (!isset($watermark_position)) {
                 $watermark_position = "CM";
             }
             $handle->SetPosition($watermark_position);
             $handle->SetTransparentColor(255, 0, 255);
             $handle->SetTransparency(100);
             switch ($wmark_info[2]) {
                 case '1':
                     $handle->AddWatermark(FILE_GIF, $watermark_img);
                     break;
                 case '2':
                     $handle->AddWatermark(FILE_JPEG, $watermark_img);
                     break;
                 case '3':
                     $handle->AddWatermark(FILE_PNG, $watermark_img);
                     break;
             }
             if ($file_info[2] == 1) {
                 imagegif($handle->marked_image, $copy);
             } elseif ($file_info[2] == 2) {
                 // Определяем примерно, с каким качеством сохранять картинки
                 $size = filesize($copy);
                 if ($size <= '10000') {
                     $quality = '90';
                 } else {
                     if ($size > '10000' && $size <= '30000') {
                         $quality = '90';
                     } else {
                         $quality = '85';
                     }
                 }
                 imagejpeg($handle->marked_image, $copy, $quality);
             } elseif ($file_info[2] == 3) {
                 imagepng($handle->marked_image, $copy);
             }
             $handle->Destroy();
             sql_updateId($this->elem_table, array('image_large' => substr($copy, 2)), $id);
         }
     }
     return true;
 }