Ver Mensaje Individual
  #1 (permalink)  
Antiguo 23/05/2006, 13:13
Molxa
 
Fecha de Ingreso: enero-2005
Mensajes: 63
Antigüedad: 19 años, 3 meses
Puntos: 1
Pregunta Problema al redimensionar imagenes grandes

Hola amigos...tengo un raro problema. Uso la siguiente aplicacion para subir mis imágenes al servidor y luego redimensionarlas. He modificado el tamaño máximo que puedo subir al servidor (ya que es de pago) con un .httaccess de la siguiente manera:

Código:
php_value upload_max_filesize 67107840
php_value post_max_size 67107840
Las imágenes las subo con un formulario normal vía POST y las proceso de la siguiente forma:

Código PHP:
        //subimos la imagen_quienes
if ($_POST["nofoto_imagen_quienes"]=="si"){
        echo 
"<center>Sin imagen para página presentación.</center><br>";
}else{
      if (
is_uploaded_file($_FILES['imagen_quienes']['tmp_name'])) {
            
//revisamos que sea jpg
            
if ($_FILES['imagen_quienes']['type'] == "image/gif"||$_FILES['imagen_quienes']['type'] == "image/pjpeg"||$_FILES['imagen_quienes']['type'] == "image/jpeg"){
            
//nuevo nombre para la imagen
               
if ($_FILES['imagen_quienes']['type'] == "image/gif"){
               
$nuevoNombre_quienes $_POST['foto_cambio_imagen_quienes'].".gif";
               }
               if (
$_FILES['imagen_quienes']['type'] == "image/pjpeg"||$_FILES['imagen_quienes']['type'] == "image/jpeg"){
               
$nuevoNombre_quienes $_POST['foto_cambio_imagen_quienes'].".jpg";
               }
            
//movemos la imagen
            
move_uploaded_file($_FILES['imagen_quienes']['tmp_name'], "../../../espacioweb/web".$_POST['maqueta']."/Img/$nuevoNombre_quienes");
            
chmod"../../../espacioweb/web".$_POST['maqueta']."/Img/$nuevoNombre_quienes"0777 );  // octal; valor correcto de mode
            //obtenemos la inforamción
            
$data GetImageSize("../../../espacioweb/web".$_POST['maqueta']."/Img/$nuevoNombre_quienes");
            
//mensaje de éxito
            
echo "<center>Imagen para página presentación subida con éxito.</center><br>";
            if (
$_FILES['imagen_quienes']['type'] == "image/pjpeg"||$_FILES['imagen_quienes']['type'] == "image/jpeg"){
            include (
"../../../includes/redimensionar_imagen_quienes.php");
            }
            if (
$_FILES['imagen_quienes']['type'] == "image/gif"){
            include (
"../../../includes/redimensionar_imagen_quienes_gif.php");
            }
            }else{
            echo 
"<center>Formato no válido para fichero de imagen para página presentación.</center><br>";
            }
            
//borrar fotos cambiadas
            
if ($_POST['actual_imagen_quienes']!="" && $_POST['actual_imagen_quienes']!="fotografia_vacia.jpg"){
             
unlink("../../../espacioweb/web".$_POST['maqueta']."/Img/".$_POST['actual_imagen_quienes']."");
            }
      }else {
      echo 
"<center>No insertada imagen para página presentación.</center><br>";
      }

De esta manera subo las imágenes al servidor y las redimensiono al mismo tiempo. De hecho hasta aqui funciona perfectamente pero el archivo que redimensiona sólo lo hace con imágenes hasta 300K. No lo entiendo.Que yo sepa no hay límite para redimensionar imagenes con la libreria GD. Este es el codigo que redimensiona:
Código PHP:
<?
//imagen original que subo al seridor y nombre de la imagen tras ser redimensionada.
$imagen_original "1148408196-Q.jpg";
$imagen_nueva "1148408196-Q-R.jpg";
//tamaño al que voy a redimensionarla
$imagen_nuevaWidth 280;
$imagen_nuevaHeight 300;


        
$imagetype = array (=> 'GIF'=> 'JPG'=> 'PNG'); 

        
$imginfo getimagesize($imagen_original); 

        if (
$imginfo == null) { 
            
$error "ERROR: La imagen original no se encontro!"
            return 
false
        } 

        
$imginfo[2] = $imagetype[$imginfo[2]]; 

        
// ancho/alto de la imagen original
        
$srcWidth $imginfo[0]; 
        
$srcHeight $imginfo[1]; 

        
// Verifica que existan las funciones GD2 
        
if (!function_exists('imagecreatefromjpeg')) { 
            
$error "la libreria de GD2 de imagenes no esta instalada!"
            return 
false
        } 
        if (!
function_exists('imagecreatetruecolor')) { 
            
$error "No existe la funcion imagecreatetruecolor de la libreria GD2 de imagenes!"
            return 
false
        } 
        if (
$imginfo[2] == 'JPG'
            
$src_img imagecreatefromjpeg($imagen_original); 
        else 
            
$src_img imagecreatefrompng($imagen_original); 
        if (!
$src_img) { 
            
$error "imagen no válida!"
            return 
false
        } 

//Mantengo las proporciones para que la imagen no se deforme
// determina el tamaño de la imagen
$imx = @ImageSX($src_img);
$imy = @ImageSY($src_img);

//determina proporcion en unidades
$x $imx/$imagen_nuevaWidth;
$y $imy/$imagen_nuevaHeight;

// calcula la escala
if($x>$y$scale $imagen_nuevaWidth/$imx;
if(
$x<$y$scale $imagen_nuevaHeight/$imy;
if(
$x==$y$scale $imagen_nuevaHeight/$imy;

//Escala la imagen
$x intval($imx*$scale);
$y intval($imy*$scale);

        
$dst_img imagecreatetruecolor($x$y); 
        
imagecopyresampled($dst_img$src_img0000$x$y$imx$imy); 
        
imagejpeg($dst_img$imagen_nueva"90");//Ojo: el 80 es la calidad de la imagen 

        
imageimagen_nuevaroy($src_img); 
        
imageimagen_nuevaroy($dst_img); 

        
// Se cambian los permisos del archivo 
        
chmod($imagen_nuevaoctdec('777')); 

        
// Se verifica que la imagen es valida 
        
$imginfo getimagesize($imagen_nueva); 
        if (
$imginfo == null) { 
            return 
false
        } else { 
            return 
true
        } 
            
unlink($imagen_original);

?>
Por favor, espero que alguien pueda ayudarme porque necesito poder redimesionar imágenes hasta 5 megas. Por cierto, tengo libreria GD (v. 2.0.28). Gracias....