Водные знаки для картинок
Наложим сразу несколько картинок поверх основной.
<?php
// исходное изображение
$base_img="car.jpg";
// imagecreatetruecolor - создаёт новое изображение true color
// $result_image=imagecreatetruecolor($baseWidth, $baseHeight);
// выясняем расширение изображения на которое будем накладывать водяной знак
if(preg_match("/.gif/i",$base_img)):
$result_image=imagecreatefromgif($base_img);
elseif(preg_match("/.jpeg/i",$base_img) or preg_match("/.jpg/i",$base_img)):
$result_image=imagecreatefromjpeg($base_img);
elseif(preg_match("/.png/i",$base_img)):
$result_image=imagecreatefrompng($base_img);
else:
die("Ошибка! Неизвестное расширение изображения");
endif;
// узнаем размер изображения
// imagesx - получает ширину изображения
// imagesy - получает высоту изображения
$baseWidth=imagesx($result_image);
$baseHeight=imagesy($result_image);
// $size=getimagesize($base_img);
// указываем координаты, где будет располагаться водяной знак
/*
* $size[0] - ширина изображения
* $size[1] - высота изображения
* - 10 -это расстояние от границы исходного изображения
*/
// $cx=$size[0]-$baseWidth-10;
// $cy=$size[1]-$baseHeight-10;
$cx=0;
$cy=0;
/* imagecopyresampled - копирует и изменяет размеры части изображения
* с пересэмплированием
*/
$arr_of_waters = ['img/fari.png', 'img/nomer.png'];
// imagecreatefrompng - создаёт новое изображение из файла или URL
// водяной знак
//
foreach ($arr_of_waters as $key => $value) {
$info = pathinfo($value);
$imgs_water[] = $info['filename'];
$water=imagecreatefrompng($value);
imagecopyresampled ($result_image, $water, $cx, $cy, 0, 0, $baseWidth, $baseHeight, $baseWidth, $baseHeight);
imagedestroy($water);
}
/* imagejpeg - создаёт JPEG-файл filename из изображения image
* третий параметр - качество нового изображение
* параметр является необязательным и имеет диапазон значений
* от 0 (наихудшее качество, наименьший файл)
* до 100 (наилучшее качество, наибольший файл)
* По умолчанию используется значение по умолчанию IJG quality (около 75)
*/
$base_img_new = pathinfo($base_img)['filename'].$baseWidth.'_'.$baseHeight.implode('', $imgs_water).'.jpg';
if(file_exists($base_img_new)){
echo "exist!";
echo $base_img_new;
return;
}
imagejpeg($result_image,$base_img_new,100);
// imagedestroy - освобождает память
imagedestroy($result_image);
// на всякий случай
// unset($result_image,$base_img);
Leave a comment