> 8) . chr($length & 0xFF); } else { $retval .= chr(0x80) . chr(0x04) . chr(($length >> 24) & 0xFF) . chr(($length >> 16) & 0xFF) . chr(($length >> 8) & 0xFF) . chr($length & 0xFF); } return $retval . $value; } } /** * Функция накладывает watermark на заданный файл * * @param string $file URL Файла * @param string $position Позиция * @param int $transparency Прозарчность * @return string link */ function watermarks($file, $position='center', $transparency=100) { global $AVE_DB; if (! defined('WATERMARKS_DIR') || ! defined('WATERMARKS_FILE')) return $file; $save = true; $margin = 10; $file_info = pathinfo($file); $watermarkFile = BASE_DIR . '/' . WATERMARKS_FILE; $watermarkDir = BASE_DIR . '/' . WATERMARKS_DIR; $imagePath = BASE_DIR . '/' . trim($file_info['dirname'], '/'); $imageName = $file_info['basename']; $copyPath = $watermarkDir . '/' . trim($file_info['dirname'], '/'); $copyName = $imageName; if (! file_exists($watermarkDir . $file)) return $file; if (! is_dir($watermarkDir)) { @mkdir($watermarkDir, 0777, true); write_htaccess_deny($watermarkDir); } if (file_exists("$copyPath/$copyName") || !file_exists("$imagePath/$imageName")) $save = false; if (file_exists($watermarkFile) && file_exists("$imagePath/$imageName")) { $size_image = getimagesize("$imagePath/$imageName"); $size_wtmrk = getimagesize($watermarkFile); list($xImage, $yImage) = $size_image; list($xWtmrk, $yWtmrk) = $size_wtmrk; if ($xImage < $xWtmrk || $yImage < $yWtmrk) $save = false; else $save = true; } if (file_exists("$copyPath/$copyName")) $save = false; if ($save) { if (! is_dir($copyPath) && !@mkdir($copyPath, 0777, true)) return $file; require_once BASE_DIR.'/class/class.thumbnail.php'; $watermark = new Image_Toolbox("$imagePath/$imageName"); if (rename("$imagePath/$imageName", "$copyPath/$copyName")) { $old = umask(0); chmod("$copyPath/$copyName", 0777); umask($old); } switch ($position) { case 'top': case 'topcenter': $xLogoPosition = 'center -'; $yLogoPosition = 'top +'.$margin; break; case 'topleft': $xLogoPosition = 'left +'.$margin; $yLogoPosition = 'top +'.$margin; break; case 'topright': $xLogoPosition = 'right -'.$margin; $yLogoPosition = 'top +'.$margin; break; case 'center': $xLogoPosition = 'center -'; $yLogoPosition = 'center -'; break; case 'centerleft': $xLogoPosition = 'left +'.$margin; $yLogoPosition = 'center -'; break; case 'centerright': $xLogoPosition = 'right -'.$margin; $yLogoPosition = 'center -'; break; case 'bottom': case 'bottomcenter': $xLogoPosition = 'center -'; $yLogoPosition = 'bottom -'.$margin; break; case 'bottomleft': $xLogoPosition = 'left +'.$margin; $yLogoPosition = 'bottom -'.$margin; break; case 'bottomright': $xLogoPosition = 'right -'.$margin; $yLogoPosition = 'bottom -'.$margin; break; case 'repeat': $xLogoPosition = 'repeat '; $yLogoPosition = 'repeat '; break; default: $xLogoPosition = 'center -'; $yLogoPosition = 'center -'; break; } $watermark->addImage($watermarkFile); $watermark->blend($xLogoPosition, $yLogoPosition, IMAGE_TOOLBOX_BLEND_COPY, $transparency); $watermark->save("$imagePath/$imageName"); if ($watermark->_img['main']['type'] == 2) { $image = getimagesize("$imagePath/$imageName", $info); if (! isset($info['APP13'])) { $sitename = get_settings('site_name'); // установка IPTC тэгов $iptc = array( '2#120' => iconv("UTF-8","WINDOWS-1251",$sitename), '2#116' => "http://".$_SERVER['SERVER_NAME'] ); // Преобразование IPTC тэгов в двоичный код $data = ''; foreach ($iptc AS $tag => $string) { $tag = substr($tag, 2); $data .= iptc_make_tag(2, $tag, $string); } // Встраивание IPTC данных $content = iptcembed($data, "$imagePath/$imageName"); // запись нового изображения в файл $fp = fopen("$imagePath/$imageName", "wb"); fwrite($fp, $content); fclose($fp); } } unset($watermark); } return $file; } ?>