Ver Mensaje Individual
  #8 (permalink)  
Antiguo 03/01/2009, 20:31
Avatar de yeudiel
yeudiel
 
Fecha de Ingreso: abril-2008
Ubicación: Ciudad de México
Mensajes: 78
Antigüedad: 16 años
Puntos: 1
Respuesta: Ayuda con subir fotos en php

Pues esta bastante enredado, pero aqui tienes una funcion que hize yo a partir de un tutorial de la web, este con una imagen te hace 2, una por ejemplo de 30 px width para thumbnails y otra de 600 px width, soporta jpg, gif, wbmp y png, requiere que tengas librerias GD, es configurable:

Código PHP:
function subir($source,$nombre_sinrepetir,$medidas_imagenchica,$medidas_imagendetalle,$carpeta_detalle,$carpeta_th){
$dest=$carpeta_th.$nombre_sinrepetir;
$im_info getimagesize($source);
switch(
$im_info[2]) {
  case 
1:
    
$imagen imagecreatefromgif($source); break;
  case 
2:
    
$imagen imagecreatefromjpeg($source); break;
  case 
3:
    
$imagen imagecreatefrompng($source); break;
  case 
15:
    
$imagen imagecreatefromwbmp($source); break;
  }
// Definimos la medida máxima 
$th_max $medidas_imagenchica// de la muestra (thumbnail) 

$det_max $medidas_imagendetalle// de la imagen detalle 
// Evaluamos si la imagen es horizontal
if($im_info[0]>$im_info[1]) {
    
// Definimos las medidas de las imagenes 
    
$th_w $th_max;
    
$th_h = ($im_info[1]/$im_info[0])*$th_max;
    
$det_w $det_max;
    
$det_h = ($im_info[1]/$im_info[0])*$det_max;
    } else {
    
$th_w = ($im_info[0]/$im_info[1])*$th_max;
    
$th_h $th_max;
    
$det_w = ($im_info[0]/$im_info[1])*$det_max;
    
$det_h $det_max;
    }
// Creamos las imágenes 
$thumb imagecreatetruecolor($th_w,$th_h);
$detalle imagecreatetruecolor($det_w,$det_h);
// Copiamos la original escalada 
imagecopyresampled($thumb,$imagen,0,0,0,0$th_w,$th_h,imagesx($imagen),imagesy($imagen));
imagecopyresampled($detalle,$imagen,0,0,0,0$det_w,$det_h,imagesx($imagen),imagesy($imagen));
// Destruimos la imagen original 
imagedestroy($imagen);
// Damos salida a nuestros archivos 
imagejpeg($thumb,$dest,60);
imagejpeg($detalle,$carpeta_detalle.$nombre_sinrepetir,60);
// Destruimos las imagenes temporales 

imagedestroy($thumb);

imagedestroy($detalle);
}
 
//se usa de la siguiente manera subir(fuente de la imagen,nombre de la imagen,ancho del thumbnail, ancho de la imagen detalle,carpeta para la imagen detalle,carpeta para el thumbnail)
subir($HTTP_POST_FILES['imagen']['tmp_name'],$HTTP_POST_FILES['imagen']['name'],350,541."carpeta/imagenes","carpeta/thumbnail");

//las carpetas deben tener permisos 777
//no pases los $HTTP_POST_FILES asi, valida el tipo, su tamaño, etc...
//si quieres pasar a base de datos la ubicacion de tu imagen
//el VALUE seria "img/usuarios/$HTTP_POST_FILES['imagen']['name']" 
Recuerda que no debes poner los $HTTP_POST_FILES directamente, debes primero validarlos, ver si no se repite el nombre con algun archivo que se llame igual, etc... Espero les sirva.

Última edición por yeudiel; 03/01/2009 a las 20:51 Razón: falto codigo y //explicaciones