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); }
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(); } }
/** * Накладывание водяного знака * @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; }