«

»

Insertar marca de agua con Php (2): Imágenes subidas desde un formulario Html

Continuando el tutorial anterior sobre insertar marcas de agua con Php, en esta ocasión aplicaremos el código que estudiamos anteriormente para guardar imágenes enviadas desde un formulario html después de haberles insertado la marca de agua.

Lo primero que necesitamos es crear el formulario html desde el que enviaremos la imagen.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es-es" lang="es-es" dir="ltr">
 <head>
 <head>
 <body>
 <form name="formulario" action="formulario.php" method="POST"
enctype="multipart/form-data">
 <input type="file" name="archivo" value="" />
 <input type="submit" value="Enviar" name="boton" />
 </form>
 </body>
 </html>

Mediante el atributo enctype=”multipart/form-data” indicamos que se va a enviar un fichero de datos.

El envío de la imagen se recibe en el mismo archivo formulario.php donde tenemos el formulario html.

Para realizar el proceso de leer la imagen enviada, marcarla y guardarla con el nombre deseado, antes del formulario html añadimos las siguientes líneas.

<?php
if(isset($_FILES['archivo'])){
 $tipo=$_FILES['archivo']['type'];
 if($tipo!="image/jpg" && $tipo!="image/jpeg" && $tipo!="image/pjpeg"){
 $error="Tipo de fichero incorrecto: Se admiten ficheros .jpg (".$tipo.')<br>';
 }else{
 $fichero=$_FILES['archivo']['tmp_name'];
 $imagen = @imagecreatefromjpeg($fichero);
 if ($imagen === false) { die ($error='No se pudo crear la imagen'); }

 $marca_ruta=$_SERVER['DOCUMENT_ROOT']."/fotos/marca.png";
 $marca = imagecreatefrompng($marca_ruta);
 $margen = 10;
 $opacidad = 80;
 $marca_x=imagesx($marca);
 $marca_y=imagesy($marca);
 $imagen_x=imagesx($imagen);
 $imagen_y=imagesy($imagen);
 $pos_x = $imagen_x - $marca_x - $margen;
 $pos_y = $imagen_y - $marca_y - $margen;
 imagecopymerge($imagen, $marca, $pos_x, $pos_y, 0, 0, $marca_x, $marca_y, $opacidad);
 $imagen_guardar=$_SERVER['DOCUMENT_ROOT']."/fotos/imagen.jpg";
 imagejpeg($imagen,$imagen_guardar);
 imagedestroy($imagen);
 imagedestroy($marca);
 chmod($imagen_guardar, 0666);
 echo 'Imagen creada';
 }
 echo $error;
}
?>

A partir de la línea en blanco, el código es el mismo que se estudió en el tutorial anterior de insertar marca de agua con Php (1). Tan sólo se elimina donde se crea la imagen que ha de ser marcada, puesto que esta en vez de leerla de una ruta se crea desde el archivo enviado en el formulario, y al final se añade chmod($imagen_guardar, 0666); para cambiar los permisos de la imagen creada, para que se pueda reescribir cuando se realice un nuevo envío.

En las primeras líneas, con if(isset($_FILES[‘archivo’])){antes de ejecutar ningún código Php, se comprueba que se ha realizado el envío de un archivo. Con $_FILES[‘archivo’][‘type’] obtenemos el tipo de archivo enviado, para comprobar que se trata de una imagen jpg.

El nombre del fichero temporal que se ha creado en el servidor lo obtenemos con $_FILES[‘archivo’][‘tmp_name’] y con la función imagecreatefromjpeg lo cargamos en Php para en las líneas siguientes poder realizar sobre el la marca de agua.

En el siguiente tutorial de la serie aprenderemos a marcar todas las imágenes existentes en un directorio.

 

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Puedes utilizar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>