InicioHazlo Tu MismoCrear Marca de Agua con PHP

Buenas gente, les acerco un desarrollito.

Un cliente me pidio agregarle una marca de agua a todas las imagenes de sus productos...12k imagenes que ya estaba subidas en su servidor. Por ahorro de tiempo decidi hacer este desarrollo de un par de horitas para ahorrar muchas mas.
Recomiendo pegarlo en algúna interfase de programacion (Dreamweaver) para ver bien el codigo.


Pros y contras:
- Es aplicable a un directorio, en el cual tambien debe estar la marca de agua. Caso contrario, se debe ubicar la marca de agua y el directorio donde se quiere mandar el archivo marcado.
- La mayoria de los servidores, luego de 30 segundos se cuelgan, por lo que si son demasiadas imagenes, vas a tener que correr el proceso varias veces.
- El proceso se corre manualmente.
- Se puede discriminar por fecha de creacion o modificacion de los archivos
- No reconoce si ya pasaste la marca a menos que filtres de alguna manera, de lo contrario pone nuevamente la marca de agua.
- Le puse un contador de archivos, por si se necesita para algun otro proceso

Si bien la marca de agua es de
http://www.forosdelweb.com/wiki/PHP:_%C2%BFC%C3%B3mo_puedo_insertar_marcas_de_agua_o_marcas_a_las_im%C3%A1genes%3F
lo que siguiente desarrollo lo arme por mi cuenta.

Saludos!!!

dijo:
dijo:


<?PHP
//Marca de agua
function crear_marca_de_agua($imagen, $imagen_marca_agua){
// Esta imagen es el logo que se pondra.
$imagen_marca = imagecreatefrompng($imagen_marca_agua);
// Defino ancho, alto del logo.
$ancho_marca = imagesx($imagen_marca);
$alto_marca = imagesy($imagen_marca);
// Creo la imagen a cual se le pondra el logo.
$imagen_dest = imagecreatefromjpeg($imagen);
// Defino ancho, alto de la imagen que se le colocara el logo.
$ancho_dest = imagesx($imagen_dest);
$alto_dest = imagesy($imagen_dest);
// Defino la posicion donde se mostrara el logo dejando
// 10 pixeles de espacio. Se mostrara en la parte
// inferior derecho.
$ancho_muestra = ($ancho_dest - $ancho_marca) - 10;
$alto_muestra = ($alto_dest - $alto_marca) - 10;
//Envio la cabecera para mostrar la imagen.
/*header("Content-type: image/jpeg" );*/
// Sobre pongo el logo a la imagen.
imagecopyresized($imagen_dest,$imagen_marca,$ancho_muestra,$alto_muestra,0,0,$ancho_marca,$alto_marca,$ancho_marca,$alto_marca);
// Guardo la imagen que ya tiene el logo.
/*imagejpeg($imagen_dest,"nuevas/".$imagen,75);*/

imagejpeg($imagen_dest,$imagen,75);

// Muestro la imagen.
/*imagejpeg($imagen_dest,"",75);*/
// Destruyo las imagenes.
imagedestroy($imagen_dest);
imagedestroy($imagen_marca);
}

//Asignamos la ruta a la variable path
$path="./";
//asignamos a $directorio el objeto dir creado con la ruta
$directorio=dir($path);
//y ahora lo vamos leyendo hasta el final
//Preparo el temita de la marca de agua
$imagen_marca = "marca-de-agua.png";



/* OPCIONES PARA FILTRADOS */
// Para archivo unico, comentar while de directorio
$marcar_archivo_unico = "2"; // 1: archivo unico, 2: directorio
// En el caso de que en algun momento quiera frenar o contar por alguna funcionalidad
$contador_para_dormir = '1'; // Tambien sirve para "contar los archivos"


//Para correr la funcion solo en una imagen:
/* crear_marca_de_agua("1515-es-529-local-015.jpg", $imagen_marca); */
if($marcar_archivo_unico == '1'){
$archivo_unico = "nombredearchivo.jpg";

// En el caso de filtrar por fechas
$fecha_de_creacion= date("F d Y", filectime($archivo_unico)); // Tomo la fecha de modificacion del archivo,
$fecha_de_modificacion = date("F d Y", filemtime($archivo_unico));
echo "(".$contador_para_dormir." ) ".$archivo_unico.": ".$fecha_de_modificacion." / ".$fecha_de_creacion."<br><br>";


}else{
while ($archivo = $directorio->read())
{
if($archivo!="." || $archivo!=".." ){
if (strtolower(substr($archivo, -3) == "jpg" ))
{
$fecha_de_creacion= date("F d Y", filectime($archivo));
$fecha_de_modificacion = date("F d Y", filemtime($archivo));

// Filtro de fechas que no quiero usar. Agregar la necesaria en ese formato.
/*
if(
$fecha_de_modificacion != "February 03 2012" &&
$fecha_de_modificacion != "February 02 2012" &&
$fecha_de_modificacion != "February 01 2012" &&

$fecha_de_modificacion != "January 31 2012" &&
$fecha_de_modificacion != "January 30 2012" &&
$fecha_de_modificacion != "January 29 2012" &&
$fecha_de_modificacion != "January 28 2012" &&
$fecha_de_modificacion != "January 27 2012" &&
$fecha_de_modificacion != "January 26 2012" &&
$fecha_de_modificacion != "January 25 2012"
){
*/
/*
// Filtro usando solo año
if(
$fecha_de_modificacion == "2008"
){
*/
if($fecha_de_modificacion == "February 01 2012" ) {
echo "(".$contador_para_dormir." ) ".$archivo.": ".$fecha_de_modificacion." / ".$fecha_de_creacion."<br>"; // Muestro algunos datos
$contador_para_dormir++; // Sumo 1 al contador para otros usos y para contar por que imagen voy
crear_marca_de_agua($archivo, $imagen_marca); // Genero la marca de agua

/*
// Una variable si quiere por ejemplo al nro de registro 100, se detenga 5 segundos y salte a otra pagina
if($contador_para_dormir == '100'){
sleep(5);
header('Location: actalizar_imagenes_02.php');
exit;
}
*/
}
}
}
}
}
//descargo el objeto
$directorio->close();
?>

Datos archivados del Taringa! original
0puntos
0visitas
0comentarios
Actividad nueva en Posteamelo
0puntos
3visitas
0comentarios
Dar puntos:

Dejá tu comentario

0/2000

Autor del Post

d
daerion🇦🇷
Usuario
Puntos0
Posts1
Ver perfil →
PosteameloArchivo Histórico de Taringa! (2004-2017). Preservando la inteligencia colectiva de la internet hispanohablante.

CONTACTO

18 de Septiembre 455, Casilla 52

Chillán, Región de Ñuble, Chile

Solo correo postal

© 2026 Posteamelo.com. No afiliado con Taringa! ni sus sucesores.

Contenido preservado con fines históricos y culturales.