Ver Mensaje Individual
  #5 (permalink)  
Antiguo 20/02/2004, 20:59
Avatar de Escoffie
Escoffie
 
Fecha de Ingreso: abril-2003
Ubicación: Mérida, Yucatán
Mensajes: 242
Antigüedad: 23 años, 5 meses
Puntos: 9
Hola a todos, la respuesta que me dio Cluster funcionó muy bien

Con la ayuda de muchos códigos de las FAQ y de otros temas aquí tocados (gracias a todos)arme un código que hace lo que yo quería.

Aquí les dejo un código que mete la imagen a tamaño de 350 dpi de ancho además de un thumbnail de 200, y en ambos casos les inserta una marca de agua.

Inserta los archivos como jpg al 60 y 40% de calidad respectivamente

¡Es una maravilla PHP y GD!

Ahí si le ven un modo de simplificarlo o mejorarlo, adelante
Porque yo lo escribí seguro pasándome por el arco del triunfo todas las buenas maneras

Código PHP:
<?php 
require_once('te_conectas.php'); 
//establece una conexión con la base de datos.
mysql_select_db($midb, $conexion); 
//selecciona la DB correspondiente
//Si no se ha subido nada, te rebota de nuevo al formulario de inserción:
if (empty($_FILES['archivo']['name'])){
header("location: mi_subir.php?status=falta%20indicar%20fichero"); //o como se llame el formulario ..
exit;
}

$name=$_FILES['archivo']['name'];
$type=$_FILES['archivo']['type'];
$thumb_name = 'tn_'.$name;
$thumb_name2 = 'tn2_'.$name;

// archivo temporal (ruta y nombre).
        
$temp=$_FILES['archivo']['tmp_name']; 
//Imagen original en el servidor
        
$img = @imagecreatefromjpeg($temp) or die("No se encuentra la imagen $camino$nombre<br>\n"); //Objeto con el que trabajará el programa
        
imagealphablending($img, true); //Para que acepte la transparencia del PNG
        
$logo = imagecreatefrompng("watermark.png"); //El logo que se va a pegar encima
        
$logo2 = imagecreatefrompng("watermark2.png"); //El logo que se va a pegar encima
        
$margen = 10; //distancia entre el watermark y la orilla
        
$margen2 = 5; //distancia entre el watermark y la orilla
        
$logoW =imagesx($logo); //Anchura del logo
        
$logoH =imagesy($logo); //Altura del logo
        
$logoW2 =imagesx($logo2); //Anchura del logo
        
$logoH2 =imagesy($logo2); //Altura del logo
        
$dimensiones = getimagesize($temp); //Dimensiones originales de la imagen
        
$anchura = 400; //Tamaño al que quiero que quede
        
$ratio = ($dimensiones[0] / $anchura);
        
$altura = round($dimensiones[1] / $ratio);
        
$anchura2 = 200; //Tamaño al que quiero que quede
        
$ratio2 = ($dimensiones[0] / $anchura2);
        
$altura2 = round($dimensiones[1] / $ratio2);
        
$thumb = imagecreatetruecolor($anchura,$altura); //crea la nueva imagen
        
$thumb2 = imagecreatetruecolor($anchura2,$altura2); //crea la nueva imagen
        
imagecopyresampled ($thumb, $img, 0, 0, 0, 0, $anchura, $altura, $dimensiones[0], $dimensiones[1]);//reescala
        
imagecopyresampled ($thumb2, $img, 0, 0, 0, 0, $anchura2, $altura2, $dimensiones[0], $dimensiones[1]);//reescala
        
imagecopy($thumb, $logo, $anchura-$logoW-$margen, $altura-$logoH-$margen, 0, 0, $logoW, $logoH); //Pone el logo
        
imagecopy($thumb2, $logo2, $anchura2-$logoW2-$margen2, $altura2-$logoH2-$margen2, 0, 0, $logoW2, $logoH2); //Pone el logo
        
imagejpeg($thumb,$thumb_name, 60);//mueve la imagen al server
        
imagejpeg($thumb2,$thumb_name2, 40);//mueve la imagen al server
        
imagedestroy($logo); //destruye el logo después de usarlo
        
imagedestroy($thumb); //destruye el thumb
        
imagedestroy($thumb2); //destruye el thumb
        
imagedestroy($img); //destruye la imagen
        
$image = addslashes(fread(fopen($thumb_name, "rb"), filesize($thumb_name))); //Arma el blob que se insertará
$image2 = addslashes(fread(fopen($thumb_name2, "rb"), filesize($thumb_name2))); //Arma el blob que se insertará
$image_size = filesize($thumb_name);
$thumb_size = filesize($thumb_name2);

        
unlink($thumb_name);//Borra el thumbnail una vez usado
        
unlink($thumb_name2);//Borra el thumbnail una vez usado

//insertamos los datos en la BD.
$consulta_insertar = "INSERT INTO mi_imagen 
(id, name, image, image_size, thumb, thumb_size, type) 
VALUES ('', '$name', '$image', '$image_size', '$image2', '$thumb_size', '$type')"
;
mysql_query($consulta_insertar,$prueba) or die("No se pudo insertar los datos en la base de datos.");
header("location: mi_subir.php?status=Upload%20".$name."%20ok");  // si ha ido todo bien
exit;
?>