Foros del Web » Programando para Internet » PHP »

detectar ancho de imagen

Estas en el tema de detectar ancho de imagen en el foro de PHP en Foros del Web. Hola quiero detectar el alto de la imagen y luego redimensionar en el caso que sea menor a 400px, por ejemplo. El php es el ...
  #1 (permalink)  
Antiguo 09/12/2011, 10:33
 
Fecha de Ingreso: mayo-2010
Mensajes: 414
Antigüedad: 14 años, 6 meses
Puntos: 2
detectar ancho de imagen

Hola quiero detectar el alto de la imagen y luego redimensionar en el caso que sea menor a 400px, por ejemplo.

El php es el siguiente:

Código PHP:
Ver original
  1. $imagen=$_FILES["File1"]["name"];
  2. $destino="imagenes/$imagen";
  3.  
  4.  
  5. //El codigo a continuación me crea la imagen con el ancho de 500.
  6.  
  7.  
  8. $nombre=$_FILES["File1"]["name"];
  9.    
  10.    
  11.     $carpeta="../imagenes";
  12.     $tamanio=500;
  13.     $path_origen=$_FILES["File1"]["tmp_name"];
  14.     include "../paginas/tamanio.php";
Ahora lo que no se es como detectar el alto, que creo se hace con esto:

Código PHP:
Ver original
  1. $tamaño = getimagesize("../$destino");
y luego cambiarle la anchura dependiendo el alto, si es menor a 400px.

Si alguien me puede dar una mano se lo agradesco!
  #2 (permalink)  
Antiguo 09/12/2011, 10:42
 
Fecha de Ingreso: noviembre-2011
Mensajes: 18
Antigüedad: 13 años
Puntos: 1
Respuesta: detectar ancho de imagen

A ver si te sirve de algo para que te des una idea y pruebes algo asì:

Código PHP:

list($width,$height)=getimagesize($uploadedfile);
            
$ancho=getimagesize($uploadedfile);

            if (
$ancho[0]<400)
            {
                
$newwidth=el_ancho;
                
$newheight=($height/$width)*$newwidth//sacamos altura proporcional
                
$tmp=imagecreatetruecolor($newwidth,$newheight);
            
                
imagecopyresampled($tmp,$src,0,0,0,0,$newwidth,$newheight,$width,$height);
    
                            
                
        } 
  #3 (permalink)  
Antiguo 09/12/2011, 13:20
 
Fecha de Ingreso: mayo-2010
Mensajes: 414
Antigüedad: 14 años, 6 meses
Puntos: 2
Respuesta: detectar ancho de imagen

Ok, teniendo en cuenta lo que me escribiste, hice lo siguiente: El problema que siempre me va a el primer if o sea menores de 400 de ancho, y estoy subiendo imagenes mayores de 400 de ancho

Código PHP:
Ver original
  1. list($width,$height)=getimagesize("../$destino");
  2.             $alto=getimagesize("../$destino");
  3.            
  4.  
  5.             if ($alto[0]<400){
  6.            
  7.              
  8.     $nombre=$_FILES["File1"]["name"];
  9.    
  10.    
  11.     $carpeta="../imagenes";
  12.     $tamanio=600;
  13.     $path_origen=$_FILES["File1"]["tmp_name"];
  14.     include "../paginas/tamanio.php";
  15.    
  16.     //header("location:../paginas/adjuntar-imagen2.php?nombre-de-imagen=$nombreDeImagen&idioma=$idioma");
  17.     }else if ($alto[0]>400){
  18.    
  19.     $nombre=$_FILES["File1"]["name"];
  20.    
  21.    
  22.     $carpeta="../imagenes";
  23.     $tamanio=400;
  24.     $path_origen=$_FILES["File1"]["tmp_name"];
  25.     include "../paginas/tamanio.php";
  26.     //header("location:../paginas/adjuntar-imagen2.php?nombre-de-imagen=$nombreDeImagen&idioma=$idioma");
  27.    
  28.     }
  #4 (permalink)  
Antiguo 09/12/2011, 13:46
Avatar de jolie_girl  
Fecha de Ingreso: agosto-2008
Ubicación: mexico
Mensajes: 346
Antigüedad: 16 años, 2 meses
Puntos: 10
Respuesta: detectar ancho de imagen

Te voy a pasar una funcion que hice , foros del web me ha ayudado a mi mucho

<?php function createThumbs( $pathToImages, $pathToThumbs, $thumbWidth, $fname )
{
// open the directory
$dir = opendir( $pathToImages );

// loop through it, looking for any/all JPG files:
// while (false !== ($fname = readdir( $dir ))) {
// parse path for the extension
$info = pathinfo($pathToImages . $fname);
// continue only if this is a JPEG image
if ( strtolower($info['extension']) == 'jpg' )
{
//echo "Imagen guardada con exito {$fname} <br />";

// load image and get image size
$img = imagecreatefromjpeg( "{$pathToImages}{$fname}" );

$rutadeimg=$pathToImages.$fname;

$img_info = getimagesize($rutadeimg); //Tu imagen

$a=$img_info[0];
$b=$img_info[1];

$proporcion=$a/$b;

$x=$thumbWidth;
$y=$thumbWidth;

if($proporcion<1)
{
if($b>$y){
$newa = floor( $a * ( $y/ $b ) );
$newb=$y;
}else{

//Deja tamaño original para que no se vea pixelado
$newa=$a;
$newb=$b;


}


}else{

if($a>$x){
$newb = floor( $b * ( $x/ $a ) );
$newa=$x;
}else{
//Deja tamaño original para que no se vea pixelado
$newa=$a;
$newb=$b;
}



}



// create a new tempopary image
$tmp_img = imagecreatetruecolor( $newa, $newb );

// copy and resize old image into new image
imagecopyresized( $tmp_img, $img, 0, 0, 0, 0, $newa, $newb, $a, $b );

//imagettftext($tmp_img,5,0,0,"aca estaria el texto",$black);
//$white = imagecolorallocate($tmp_img, 255,255,255);
//imagettftext($tmp_img, '7', 0, 8, 68, $white, "arial.ttf", "RematoMisCosas.com");

// save thumbnail into a file
imagejpeg( $tmp_img, "{$pathToThumbs}{$fname}" );
}





//}
// close the directory
closedir( $dir );
}
?>
__________________
Solicito colaboradoras para proyecto social media largo plazo. Manda mp
  #5 (permalink)  
Antiguo 09/12/2011, 14:03
 
Fecha de Ingreso: mayo-2010
Mensajes: 414
Antigüedad: 14 años, 6 meses
Puntos: 2
Respuesta: detectar ancho de imagen

gracias! lo voy a tener en cuenta pero me gustaría resolverlo yo con el codigo que hice!
Si alguien me puede ayudar sobre el codigo anterior!
Gracias!
  #6 (permalink)  
Antiguo 09/12/2011, 14:30
 
Fecha de Ingreso: mayo-2010
Mensajes: 414
Antigüedad: 14 años, 6 meses
Puntos: 2
Respuesta: detectar ancho de imagen

Al final pude resolverlo:

Código PHP:
Ver original
  1. $imagenTemporal=$_FILES['File1']['tmp_name'];
  2.  
  3. list($width,$height)=getimagesize("$imagenTemporal");
  4.             $alto=getimagesize("$imagenTemporal");
  5.            
  6.  
  7.             if ($alto[1]<400){
  8.            
  9.              
  10.     $nombre=$_FILES["File1"]["name"];
  11.    
  12.    
  13.     $carpeta="../imagenes";
  14.     $tamanio=600;
  15.     $path_origen=$_FILES["File1"]["tmp_name"];
  16.     include "../paginas/tamanio.php";
  17.    
  18.     //header("location:../paginas/adjuntar-imagen2.php?nombre-de-imagen=$nombreDeImagen&idioma=$idioma");
  19.     }else if ($alto[1]>400){
  20.    
  21.     $nombre=$_FILES["File1"]["name"];
  22.    
  23.    
  24.     $carpeta="../imagenes";
  25.     $tamanio=400;
  26.     $path_origen=$_FILES["File1"]["tmp_name"];
  27.     include "../paginas/tamanio.php";
  28.     //header("location:../paginas/adjuntar-imagen2.php?nombre-de-imagen=$nombreDeImagen&idioma=$idioma");
  29.    
  30.     }

Gracias por las respuestas!

Etiquetas: ancho, imagenes
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:43.