Добавление watermark на картинку при ресайзе

This commit is contained in:
Krivchikov Dmitry 2014-10-11 19:33:32 +04:00
parent 0e178f19b2
commit 341cacc844
4 changed files with 18 additions and 4 deletions

View File

@ -36,15 +36,18 @@ class Image
$sizes = App::getConfig('images'); $sizes = App::getConfig('images');
$pathInfo = pathinfo($_SERVER['SCRIPT_FILENAME']); $pathInfo = pathinfo($_SERVER['SCRIPT_FILENAME']);
$uploaddir = $pathInfo['dirname'] . '/photos/'; $uploaddir = $pathInfo['dirname'] . '/photos/';
$watermarkDir = App::getBasedir().'watermarks/';
foreach ($sizes as $dir => $size) foreach ($sizes as $dir => $size)
{ {
$watermark = isset($size[3])?$watermarkDir.$size[3]:'';
self::imgResize( self::imgResize(
$uploaddir . $imgName, // Source - original image $uploaddir . $imgName, // Source - original image
$uploaddir . $dir . '/' . $imgName, // Destination $uploaddir . $dir . '/' . $imgName, // Destination
$size[0], // X $size[0], // X
$size[1], // Y $size[1], // Y
$size[2] // Quelity $size[2], // Quality
$watermark// Watermark
); );
} }
@ -60,7 +63,7 @@ class Image
* Необязательные параметры: * Необязательные параметры:
* $quality - качество генерируемого JPEG, по умолчанию 90; максимальное 100; * $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)) if (!file_exists($src))
return false; return false;
@ -95,6 +98,17 @@ class Image
imagefill($idest, 0, 0, 0xFFFFFF); imagefill($idest, 0, 0, 0xFFFFFF);
imagecopyresampled($idest, $isrc, $new_left, $new_top, 0, 0, $new_width, $new_height, $size[0], $size[1]); 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 = "image".$format;
//$iofunct($idest, $dest, $quality); //$iofunct($idest, $dest, $quality);
imagejpeg($idest, $dest, $quality); imagejpeg($idest, $dest, $quality);

View File

@ -11,8 +11,8 @@ return array(
'images' => array( 'images' => array(
// 'dirName' => array(maxX, maxY, quality), // 'dirName' => array(maxX, maxY, quality),
'small' => array(200, 150, 100), 'small' => array(200, 150, 100),
'middle' => array(555, 450, 90), 'middle' => array(555, 450, 90, 'middle.png'),
'big' => array(1110, 900, 90), 'big' => array(1110, 900, 90, 'big.png'),
), ),
//'version' => trim(file_get_contents(dirname(__FILE__).'/version')), //'version' => trim(file_get_contents(dirname(__FILE__).'/version')),
'metrika' => true, 'metrika' => true,

BIN
ground/watermarks/big.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB