Наложение водяного знака. Функция используется на одной странице 1 раз.
function watermark($file, $watermark, $pos = null, $x = 0, $y = 0)
{
$details = getimagesize($file);
$wDetails = getimagesize($watermark);
if (!is_null($pos)) {
switch($pos){
case TOP_LEFT:
$x = 0;
$y = 0;
break;
case TOP_RIGHT:
$x = $details[0] - $wDetails[0];
$y = 0;
break;
case BOTTOM_LEFT:
$x = 0;
$y = $details[1] - $wDetails[1];
break;
case BOTTOM_RIGHT:
$x = $details[0] - $wDetails[0];
$y = $details[1] - $wDetails[1];
break;
case CENTER:
$x = round(($details[0] - $wDetails[0])/2);
$y = round(($details[1] - $wDetails[1])/2);
break;
}
}
switch($details['mime']){
case 'image/jpeg':$im = imagecreatefromjpeg($file);break;
case 'image/gif':$im = imagecreatefromgif($file);break;
case 'image/png':$im = imagecreatefrompng($file);break;
}
switch($wDetails['mime']){
case 'image/jpeg':$newWater = imagecreatefromjpeg($watermark);break;
case 'image/gif':$newWater = imagecreatefromgif($watermark);$colorTransparent = imagecolortransparent($newWater);imagefill($newWater, 0, 0, $colorTransparent);imagecolortransparent($newWater, $colorTransparent);break;
case 'image/png':$newWater = imagecreatefrompng($watermark);imagealphablending($newWater, false);imagesavealpha($newWater,true);break;
}
imagecopyresampled($im, $newWater, $x, $y, 0, 0, $wDetails[0], $wDetails[1], $wDetails[0], $wDetails[1]);
// Вывод картинки
switch($details['mime']){
case 'image/jpeg':header('Content-type: image/jpeg');imagejpeg($im);break;
case 'image/gif':header('Content-type: image/gif');imagegif($im);break;
case 'image/png':header('Content-type: image/png');imagepng($im);break;
}
// Освобождение памяти
imagedestroy($im);
}
// Водяной знак (использование по умолчанию)
watermark('pic.jpg','watermark.png');
// Использование водяного знака с нестрогим позиционированием
// Возможные значения: TOP_LEFT, TOP_RIGHT, BOTTOM_LEFT, BOTTOM_RIGHT, CENTER
watermark('pic.jpg','watermark.png', BOTTOM_RIGHT);
// Использование водяного знака со строгим позиционированием
watermark('pic.jpg','watermark.png', null, 150, 150);
Комментариев нет:
Отправить комментарий