function watermark($image, $stamp, $alpha, $degrees) {
$stamp = imagecreatefrompng($stamp); //Логотип, размер произвольный
$stamp = imagerotate($stamp , $degrees, 255);
$sx = imagesx($stamp); //Получаем ширину
$sy = imagesy($stamp); //Высоту
$alpha = $alpha * 127 / 100;
$padding = 5; // отступ от повторения штампа
imagealphablending($stamp, false);
imagesavealpha($stamp, true);
for( $x = 0; $x < $sx; $x++ ){
for( $y = 0; $y < $sy; $y++ ){
$colorxy = imagecolorat( $stamp, $x, $y );
$alphacolorxy = imagecolorallocatealpha( $stamp,
( $colorxy >> 16 ) & 0xFF,
( $colorxy >> 8 ) & 0xFF,
$colorxy & 0xFF,
$alpha
);
imagesetpixel($stamp, $x,$y, $alphacolorxy);
if( !imagesetpixel( $stamp, $x, $y, $alphacolorxy ) ){
echo "string";
return false;
}
}
}
$im = imagecreatefromjpeg($image); //Исходная картинка
$im_x = imagesx($im);
$im_y = imagesy($im);
$repeat_x = ceil($im_x/($sx));
$repeat_y = ceil($im_y/($sy));
for ($i=1; $i <= $repeat_x; $i+=2) {
for ($j=1; $j <= $repeat_y; $j+=2) {
imagecopy($im, $stamp, $im_x - $sx*$i, $im_y - $sy*$j, 0, 0, $sx, $sy);
}
}
var_dump($im);
imagejpeg($im, 'new_' . $image, 100); //Создаем изображение
imagedestroy($im); //Чистим за собой
imagedestroy($stamp); //Чистим за собой
}
watermark('image.jpg', 'watermark.png', 70, 30);
echo "<img src='new_image.jpg'>";
$image = imagecreatefromstring(file_get_contents('test.jpg'));
// получаем разеры исходника
$ix = imagesx($image);
$iy = imagesy($image);
// делаем холст с заливкой фона
$newimage = imagecreatetruecolor($ix, $iy);
$transparent = imagecolorallocatealpha($newimage, 255, 255, 255, 127);
imagefill($newimage, 0, 0, $transparent);
imagealphablending($newimage, true);
imagesavealpha($newimage, true);
// накладываем исходник на холст
imagecopyresampled($newimage, $image, 0, 0, 0, 0, $ix, $iy, $ix, $iy);
// берем вотермарку
$imageW = imagecreatefromstring(file_get_contents('logo.png'));
$wx = imagesx($imageW);
$wy = imagesy($imageW);
// для поворота нужен прозрачный холст
$new = imagecreatetruecolor($wx, $wy);
$transparent = imagecolorallocatealpha($new, 0, 0, 0, 127);
$rotate = imagerotate($imageW, 45, $transparent);
imagealphablending($rotate, true);
imagesavealpha($rotate, true);
// пересчет размеров после поворота
$ix = imagesx($rotate);
$iy = imagesy($rotate);
// наложение 50 50 начало от левого верхнего угла
imagecopyresampled($image, $rotate, 50, 50, 0, 0, $ix, $iy, $ix, $iy);
// сохранение
imagepng($image, 'testus.png', 9, PNG_ALL_FILTERS);