He creado un script que agrega una marca de agua sobre una imagen existente usando PHP. Eso funciona todo bien. Puedo colocarlo en la esquina superior izquierda, inferior izquierda, superior derecha, inferior derecha y centrada. No he podido averiguar cómo repetir la marca de agua si quisiera.¿Cómo repito una imagen de marca de agua con GD y PHP?
me gustaría hacer una marca de agua que se repite como esta imagen:
El código:
function imagecopymerge_alpha($dst_im, $src_im, $dst_x, $dst_y, $src_x, $src_y, $src_w, $src_h, $pct){
// creating a cut resource
$cut = imagecreatetruecolor($src_w, $src_h);
// copying relevant section from background to the cut resource
imagecopy($cut, $dst_im, 0, 0, $dst_x, $dst_y, $src_w, $src_h);
// copying relevant section from watermark to the cut resource
imagecopy($cut, $src_im, 0, 0, $src_x, $src_y, $src_w, $src_h);
// insert cut resource to destination image
imagecopymerge($dst_im, $cut, $dst_x, $dst_y, 0, 0, $src_w, $src_h, $pct);
}
$imagesource = $image['file_path'];
$watermarkPath = $settings['watermark'];
$filetype = substr($imagesource,strlen($imagesource)-4,4);
$filetype = strtolower($filetype);
$watermarkType = substr($watermarkPath,strlen($watermarkPath)-4,4);
$watermarkType = strtolower($watermarkType);
// Let's pretend that $watermark and $image are now GD resources.
$imagewidth = imagesx($image);
$imageheight = imagesy($image);
$watermarkwidth = imagesx($watermark);
$watermarkheight = imagesy($watermark);
switch ($settings['watermark_location'])
{
case "tl": //Top Left
$startwidth = 20;
$startheight = 20;
break;
case "bl": //Bottom Left
$startwidth = 20;
$startheight = (($imageheight - $watermarkheight) - 20);
break;
case "tr": //Top Right
$startwidth = (($imagewidth - $watermarkwidth) - 20);
$startheight = 20;
break;
case "br": //Bottom Right
$startwidth = (($imagewidth - $watermarkwidth) - 20);
$startheight = (($imageheight - $watermarkheight) - 20);
break;
case "middle": //Middle/center
$startwidth = (($imagewidth - $watermarkwidth)/2);
$startheight = (($imageheight - $watermarkheight)/2);
break;
case "repeat":
// not sure what to do here
break;
default:
$startwidth = (($imagewidth - $watermarkwidth)/2);
$startheight = (($imageheight - $watermarkheight)/2);
}
imagecopymerge_alpha($image, $watermark, $startwidth, $startheight, 0, 0, $watermarkwidth, $watermarkheight,$settings['watermark_opacity']);
imagejpeg($image,NULL,90);
imagedestroy($image);
imagedestroy($watermark);
¿Qué le parece publicar su código. Solo una conjetura, pero eso podría ayudar. –
Es absolutamente necesario que veamos el código que ya está utilizando para que podamos darle sugerencias sobre cómo hacer que la marca de agua se repita. – Charles
publicado un pastie ... tiene una tonelada de código ... simplemente concéntrese en la caja del conmutador cerca de 70 líneas hacia abajo – Ronnie