From 341cacc8447ffc67681a54764983fa266c6d4158 Mon Sep 17 00:00:00 2001 From: Krivchikov Dmitry Date: Sat, 11 Oct 2014 19:33:32 +0400 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20watermark=20=D0=BD=D0=B0=20=D0=BA=D0=B0?= =?UTF-8?q?=D1=80=D1=82=D0=B8=D0=BD=D0=BA=D1=83=20=D0=BF=D1=80=D0=B8=20?= =?UTF-8?q?=D1=80=D0=B5=D1=81=D0=B0=D0=B9=D0=B7=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ground/classes/Image.php | 18 ++++++++++++++++-- ground/config_template.php | 4 ++-- ground/watermarks/big.png | Bin 0 -> 8609 bytes ground/watermarks/middle.png | Bin 0 -> 4350 bytes 4 files changed, 18 insertions(+), 4 deletions(-) create mode 100644 ground/watermarks/big.png create mode 100644 ground/watermarks/middle.png diff --git a/ground/classes/Image.php b/ground/classes/Image.php index aacf0a8..7377bb3 100644 --- a/ground/classes/Image.php +++ b/ground/classes/Image.php @@ -36,15 +36,18 @@ class Image $sizes = App::getConfig('images'); $pathInfo = pathinfo($_SERVER['SCRIPT_FILENAME']); $uploaddir = $pathInfo['dirname'] . '/photos/'; + $watermarkDir = App::getBasedir().'watermarks/'; foreach ($sizes as $dir => $size) { + $watermark = isset($size[3])?$watermarkDir.$size[3]:''; self::imgResize( $uploaddir . $imgName, // Source - original image $uploaddir . $dir . '/' . $imgName, // Destination $size[0], // X $size[1], // Y - $size[2] // Quelity + $size[2], // Quality + $watermark// Watermark ); } @@ -60,7 +63,7 @@ class Image * Необязательные параметры: * $quality - качество генерируемого JPEG, по умолчанию 90; максимальное 100; */ - private static function imgResize($src, $dest, $width, $height, $quality = 90) + private static function imgResize($src, $dest, $width, $height, $quality = 90, $watermark = '') { if (!file_exists($src)) return false; @@ -95,6 +98,17 @@ class Image imagefill($idest, 0, 0, 0xFFFFFF); imagecopyresampled($idest, $isrc, $new_left, $new_top, 0, 0, $new_width, $new_height, $size[0], $size[1]); + if ($watermark) + { + $stamp = imagecreatefrompng($watermark); + + $marge_right = 10; + $marge_bottom = 2; + $sx = imagesx($stamp); + $sy = imagesy($stamp); + + imagecopy($idest, $stamp, imagesx($idest) - $sx - $marge_right, imagesy($idest) - $sy - $marge_bottom, 0, 0, imagesx($stamp), imagesy($stamp)); + } //$iofunct = "image".$format; //$iofunct($idest, $dest, $quality); imagejpeg($idest, $dest, $quality); diff --git a/ground/config_template.php b/ground/config_template.php index 133b7c6..93af114 100644 --- a/ground/config_template.php +++ b/ground/config_template.php @@ -11,8 +11,8 @@ return array( 'images' => array( // 'dirName' => array(maxX, maxY, quality), 'small' => array(200, 150, 100), - 'middle' => array(555, 450, 90), - 'big' => array(1110, 900, 90), + 'middle' => array(555, 450, 90, 'middle.png'), + 'big' => array(1110, 900, 90, 'big.png'), ), //'version' => trim(file_get_contents(dirname(__FILE__).'/version')), 'metrika' => true, diff --git a/ground/watermarks/big.png b/ground/watermarks/big.png new file mode 100644 index 0000000000000000000000000000000000000000..0ccb558248d9d74e1ffddd0dde2abc80420294c6 GIT binary patch literal 8609 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