1. Dispongo de un sistema para subir imágenes y textos para crear galerías de fotos.
El mismo sube las imágenes a un directorio, guarda thumbnails y me guarda los datos en una DB.
Lo que quiero es agregarle a todo esto un código para que antes de guardar la foto le ponga una watermark.
Esta es la función que utiliza para crear el thumbnail y escalarla:
Código PHP:
function thumbjpeg($imagen,$nombre) {
// Lugar donde se guardarán los thumbnails respecto a la carpeta donde está la imagen "grande".
$dir_thumb = "imagenes_ch/";
// Prefijo que se añadirá al nombre del thumbnail. Ejemplo: si la imagen grande fuera "imagen1.jpg",
// el thumbnail se llamaría "tn_imagen1.jpg"
$prefijo_thumb = "tn_";
// Aquí tendremos el nombre de la imagen.
$nombre1=basename($imagen);
// Aquí la ruta especificada para buscar la imagen.
$camino = dirname($imagen)."/";
// Intentamos crear el directorio de thumbnails, si no existiera previamente.
if (!file_exists($camino.$dir_thumb))
@mkdir ($camino.$dir_thumb, 0777) or die("No se ha podido crear el directorio ".$camino.$dir_thumb);
// Aquí comprovamos que la imagen que queremos crear no exista previamente
$img = @imagecreatefromjpeg($imagen) or die("No se encuentra la imagen $camino$nombre<br>\n");
// miramos el tamaño de la imagen original...
$datos = getimagesize($camino.$nombre1) or die("Problemas con $camino$nombre1<br>\n");
// intentamos escalar la imagen original a la medida que nos interesa
$anchura = 450;
$altura=($anchura*$datos[1])/$datos[0];
// esta será la nueva imagen reescalada
$thumb = imagecreatetruecolor($anchura,$altura);
//echo $camino.$dir_thumb.$prefijo_thumb.$nombre;
// con esta función la reescalamos
imagecopyresampled ($thumb, $img, 0, 0, 0, 0, $anchura, $altura, $datos[0], $datos[1]);
// voilà la salvamos con el nombre y en el lugar que nos interesa.
imagejpeg($thumb,$dir_thumb.$nombre);
}
Código PHP:
$ruta_marca = 'marca_de_agua.png';
$watermark = imagecreatefrompng($ruta_marca);
$ruta_imagen = 'Tulipanes.jpg';
$imagen = imagecreatefromjpeg($ruta_imagen);
$tamanyo_imagen = getimagesize($ruta_imagen);
$tamanyo_marca = getimagesize($ruta_marca);
$dest_x = $tamanyo_imagen[0] - $tamanyo_marca[0] - 10;
$dest_y = $tamanyo_imagen[1] - $tamanyo_marca[1] - 10;
imagecopymerge($imagen, $watermark, $dest_x, $dest_y, 0, 0,$tamanyo_marca[0], $tamanyo_marca[1], 100);
imagejpeg($imagen);
imagedestroy($imagen);
imagedestroy($watermark);
:)