En el mundo del internet realizar una marca de agua es la única forma de proteger una imagen que sea de nuestra propiedad y sea utilizada por otras personas. Para esto agregamos la marca de agua a todas nuestras imágenes, alguno de los beneficios de colocar una marca de agua a las imágenes es crear un público que reconozca el trabajo realizado.
En este tutorial les voy a mostrar como subir una imagen desde un formulario guardar los datos en una base de datos y mostrar la imagen subida.
En este ejemplo vamos a utilizar la librería GD de PHP que nos proporciona una forma muy sencilla de agregar una marca de agua a nuestras imágenes, la librería GD utiliza los canales alfa para poder agregar la imagen.
Es muy importante saber que para crear una marca de agua con PHP debemos trabajar con 2 imágenes, una es la que cargaremos a través del formulario y otra es la que se va a encontrar en el servidor esperando ser colocado como marca de agua.
A continuación les dejo el script en funcionamiento para crear una marca de agua
<?php
$connect = new PDO("mysql:host=localhost;dbname=testing", "root", "");
$message = '';
if(isset($_POST["upload"]))
{
if(!empty($_FILES["select_image"]["name"]))
{
$extension = pathinfo($_FILES["select_image"]["name"],PATHINFO_EXTENSION);
$allow_extension = array('jpg','png','jpeg');
$file_name = uniqid() . '.' . $extension;
$upload_location = 'upload/' . $file_name;
if(in_array($extension, $allow_extension))
{
$image_size = $_FILES["select_image"]["size"];
if($image_size < 2 * 1024 * 1024)
{
if(move_uploaded_file($_FILES["select_image"]["tmp_name"], $upload_location))
{
//Aqui colocamos la marca de agua
$watermark_image = imagecreatefrompng('round-logo.png');
if($extension == 'jpg' || $extension == 'jpeg')
{
$image = imagecreatefromjpeg($upload_location);
}
if($extension == 'png')
{
$image = imagecreatefrompng($upload_location);
}
$margin_right = 10;
$margin_bottom = 10;
$watermark_image_width = imagesx($watermark_image);
$watermark_image_height = imagesy($watermark_image);
imagecopy($image, $watermark_image, imagesx($image) - $watermark_image_width - $margin_right, imagesy($image) - $watermark_image_height - $margin_bottom, 0, 0, $watermark_image_width, $watermark_image_height);
imagepng($image, $upload_location);
imagedestroy($image);
if(file_exists($upload_location))
{
$message = "Imagen subida y agregada la marca de agua";
$data = array(
':image_name' => $file_name
);
$query = "
INSERT INTO images_table
(image_name, upload_datetime)
VALUES (:image_name, now())
";
$statement = $connect->prepare($query);
$statement->execute($data);
}
else
{
$message = "Ocurerio un error intenta de nuevo";
}
}
else
{
$message = "Ocurrio un error intenta de nuevo";
}
}
else
{
$message = "La imagen es muy grande";
}
}
else
{
$message = 'Solo estos formatos de imagenes estan permitidos .jpg, .png and .jpeg';
}
}
else
{
$message = 'Por favor selecciona una imagen';
}
}
$query = "
SELECT * FROM images_table
ORDER BY image_id DESC
";
$statement = $connect->prepare($query);
$statement->execute();
$result = $statement->fetchAll();
?>
<!DOCTYPE html>
<html>
<head>
<title>Agregar marca de agua webdebe.xyz</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" />
</head>
<body>
<br />
<div class="container">
<h3 align="center">Agregar marcas de agua webdebe.xyz</h3>
<br />
<?php
if($message != '')
{
echo '
<div class="alert alert-info">
'.$message.'
</div>
';
}
?>
<div class="panel panel-default">
<div class="panel-heading">Agregar Marca de agua</div>
<div class="panel-body">
<form method="post" enctype="multipart/form-data">
<div class="row">
<div class="form-group">
<label class="col-md-6" align="right">Selecciona la imagen</label>
<div class="col-md-6">
<input type="file" name="select_image" />
</div>
</div>
</div>
<br />
<div class="form-group" align="center">
<input type="submit" name="upload" class="btn btn-primary" value="Upload" />
</div>
</form>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">Imagenes subidas con marca de agua</div>
<div class="panel-body" style="height: 700px;overflow-y: auto;">
<div class="row">
<?php
foreach($result as $row)
{
echo '
<div class="col-md-2" style="margin-bottom:16px;">
<img src="upload/'.$row["image_name"].'" class="img-responsive img-thumbnail" />
</div>
';
}
?>
</div>
</div>
</div>
</div>
</body>
</html>
Aqui dejo la base de datos para que funcione correctamente
-- -- Database: `testing` -- -- -------------------------------------------------------- -- -- Table structure for table `images_table` -- CREATE TABLE `images_table` ( `image_id` int(11) NOT NULL, `image_name` varchar(250) NOT NULL, `upload_datetime` datetime NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1; -- -- Indexes for dumped tables -- -- -- Indexes for table `images_table` -- ALTER TABLE `images_table` ADD PRIMARY KEY (`image_id`); -- -- AUTO_INCREMENT for dumped tables -- -- -- AUTO_INCREMENT for table `images_table` -- ALTER TABLE `images_table` MODIFY `image_id` int(11) NOT NULL AUTO_INCREMENT;







