Foros del Web » Programando para Internet » PHP »

como reducir tamano de imagenes con php

Estas en el tema de como reducir tamano de imagenes con php en el foro de PHP en Foros del Web. tengo este script en php para subir imagenes a mi web, pero lo que quiero es que al subir una imagen la suba de una ...
  #1 (permalink)  
Antiguo 31/12/2008, 15:41
(Desactivado)
 
Fecha de Ingreso: junio-2008
Mensajes: 287
Antigüedad: 15 años, 10 meses
Puntos: 9
como reducir tamano de imagenes con php

tengo este script en php para subir imagenes a mi web, pero lo que quiero es que al subir una imagen la suba de una cierta medida por ejemplo tengo unas fotos que miden 1024 x 768 pero quiero que al subirlas me las reduzca a 600 x 400 como le puedo hacer ya me enfade de reducir cada una en photo shop
gracias de antemano...


Código PHP:

<?php  
$status 
""
$carpeta="../Amri/"
if (isset(
$_POST["enviar"])) { 
    
// obtenemos los datos del archivo  
    
$tamano $_FILES["archivo"]['size']; 
    
$tipo $_FILES["archivo"]['type']; 
    
$archivo $_FILES["archivo"]['name'];//nombre fuente 
    
$prefijo substr(md5(uniqid(rand())),0,6); 
     
    
$extension explode(".",$archivo); 
    
$num count($extension)-1
    
$nombre=basename($archivo,".".$extension[$num]);//nombre base del archivo 
    
$imagen=$nombre."_".$prefijo.".".$extension[$num];//nombre real de la imagen 
    
if ($archivo != "") { 
        
$ext=strtolower($extension[$num]); 
        if(
$ext=='jpg' or $ext=='png' or $ext=='bmp'){//depende de que deseas que suban.... 
            
$destino =  $carpeta.$imagen;//lugar donde se almacenara 
            
if (copy($_FILES['archivo']['tmp_name'],$destino)){ 
                
$status "Archivo subido: <b>".$imagen."</b>"
            } else { 
                
$status "Error: No se logro subir el archivo"
            } 
        } else { 
                
$status "Error: Solo se permiten (*.jpg,*.png,*.bmp)"
        } 
    } else { 
        
$status "Error: Archivo no encontrada para subir al Servidor"
    } 

?> 

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>:::Subir fotos:::</title>
<script language="javascript"> 
var XMLRequest;     
var XMLRequest2;     
function getHTTPObject() { 
    var xmlhttp; 
    if(window.XMLHttpRequest){ 
        xmlhttp = new XMLHttpRequest(); 
    }else if (window.ActiveXObject){ 
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
    return xmlhttp; 


function elimina(ar,txt){ 
    XMLRequest2=getHTTPObject(); 
    var url="eliminar.php?ar="+ar;//habre la pagina y elimina el archivo enviado 
    XMLRequest2.open("GET",url,true); 
    XMLRequest2.send(null); 
    self.location = "upload.php?"; 

</script> 
<link href="estilo.css" rel="stylesheet" type="text/css" />
<style type="text/css">
<!--
#Layer1 {
    position:absolute;
    left:531px;
    top:89px;
    width:127px;
    height:50px;
    z-index:1;
}
#Layer2 {
    position:absolute;
    left:281px;
    top:192px;
    width:396px;
    height:62px;
    z-index:1;
}
#Layer3 {
    position:absolute;
    left:331px;
    top:307px;
    width:70px;
    height:14px;
    z-index:2;
}
#Layer4 {
    position:absolute;
    left:97px;
    top:49px;
    width:259px;
    height:31px;
    z-index:3;
}
#Layer5 {
    position:absolute;
    left:165px;
    top:160px;
    width:115px;
    height:16px;
    z-index:4;
}
#Layer6 {
    position:absolute;
    left:527px;
    top:217px;
    width:361px;
    height:53px;
    z-index:5;
}
#Layer7 {
    position:absolute;
    left:507px;
    top:295px;
    width:234px;
    height:65px;
    z-index:6;
}
#Layer8 {
    position:absolute;
    left:516px;
    top:187px;
    width:141px;
    height:52px;
    z-index:5;
}
-->
</style>
</head>
<body background="imagenes/amri.jpg">
<div id="Layer5"><a href="../index.php" target="_blank"><strong>Visita la Galeria </strong></a></div>
<div id="Layer2">
  <table width="413" border="0" cellspacing="0" cellpadding="0" align="center"> 
  <tr> 
    <td width="413" height="40" class="titulo"><div align="center">Sube Imagenes de Amri y Carlo </div></td> 
  </tr> 
  <tr> 
    <td class="text">Por favor selecciona la imagen a Guardar:</td> 
  </tr> 
  <tr> 
      <td class="text"> 
    <form action="index.php" method="post" enctype="multipart/form-data" > 
        <input name="archivo" type="file" class="casilla" id="archivo" size="35" /> 
          <input name="enviar" type="submit" class="boton" id="enviar" value="Guardar" /> 
    </form> 
    </td> 
  </tr> 
  <tr> 
    <td class="text" style="color:#990000"><?php echo $status?></td> 
  </tr> 
  <tr> 
    <td height="30" class="subtitulo">Listado de Imagenes Guardadas </td> 
  </tr> 
  <tr> 
    <td class="infsub"><br /> 
    <?php 
    
if ($gestor opendir($carpeta)) {         
        while (
false !== ($arch readdir($gestor))){ 
            if (
$arch != "." && $arch != "..") { 
                
$extension explode(".",$arch); 
                
$num count($extension)-1
                
$ext=strtolower($extension[$num]); 
                if(
$ext=='jpg' or $ext=='png' or $ext=='bmp'){ $archivos[]=$arch; } 
            } 
        } 
        
closedir($gestor); 
        
// Ordenas tu array: 
        
sort($archivos);  
        
// (y mueves el puntero interno del array al principio ..) 
        
reset($archivos); 
         
        
$i=0
        echo 
'<table width="100%" border="0" cellspacing="0" cellpadding="0" align="center">'
        foreach (
$archivos as $arch){ 
            
$im=getimagesize($carpeta.$arch); 
            
$an=$im[0]; $al=$im[1]; 
            (
$i%2==0)?$color="#CCCCCC":$color="#999999"
            echo 
"<tr style='background:$color'><td width='300' align='left'><li><a href=\"../Amri/".$arch."\" class=\"linkli\">".$arch."</a></li>\n"
           
            echo 
"<td width='40' align='center'><a href='index.php' onClick='elimina(\"".$arch."\",\"".$txt."\");' class=\"abrir\"><img src='imagenes/eliminar.png' width='20' height='20' title='Eliminar' alt='Eliminar' border='0'/></a></td><td width='20'></td></tr>"
            
$i++; 
        } 
        echo 
"</table>"
    } 
    
?> 
    </td> 
  </tr> 
</table>
</div>
</body>
</html>
  #2 (permalink)  
Antiguo 31/12/2008, 15:47
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: como reducir tamano de imagenes con php

http://php.net/gd
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 31/12/2008, 17:39
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: como reducir tamano de imagenes con php

cher1_7, tienes 2 opciones, una es leer el manual de la libreria GD de PHP como te recomienda pateketrueke y otra es crear acciones en Photoshop, con ellas puedes modificar la cantidad de imagenes que desees con un solo click. Yo te recomendaria aprender a hacer las dos cosas, puede que algun dia necesites una u otra opcion.
__________________
- León, Guanajuato
- GV-Foto
  #4 (permalink)  
Antiguo 31/12/2008, 20:55
 
Fecha de Ingreso: abril-2006
Mensajes: 1.128
Antigüedad: 18 años
Puntos: 33
Respuesta: como reducir tamano de imagenes con php

cherl_7:
Este codigo te reduce una imagen en el porcentaje que quieras,
te crea un "Thumbnail" de tamaño 187 x 187 pixeles y le dibuja una
linea roja al contorno de la imagen final.
Si logras manipular puedes hacer muchas cosas.

Cita:
<?php
//Tu Imagen
$imagen = 'papa.jpg';
//Obtener las dimensiones
list($ancho, $alto, $type, $attr) = getimagesize($imagen);
//Guardando la imagen en la memoria(Para Manipular con las librerias GD)
$miimagen = imagecreatefromjpeg($imagen);
//Estableciendo lo que queremos cortar de la imagen
if($ancho > $alto) {
$ladomasalto = "$ancho";
}else {
$ladomasalto = "$alto";
}
//Le vamos a quitar el 5% del lado mas grande
$reducirporcentage = 0.95;
$reducirancho = $ladomasalto*$reducirporcentage;
$reduciralto = $ladomasalto*$reducirporcentage;
//Obtenemos la coordenada del lado arriba-izquierdo
$coordenadas = array("x"=>(($ancho-$reducirancho)/2), "y"=>(($alto-$reduciralto)/2));
//Creamos el Thumbnail
$tamanothumb = 187;
$thumbnail = imagecreatetruecolor($tamanothumb, $tamanothumb);
imagecopyresampled($thumbnail, $miimagen, 0, 0, $coordenadas['x'], $coordenadas['y'], $tamanothumb, $tamanothumb, $reducirancho, $reduciralto);
//Creando las lineas
$anchodelinea = 2;
$margen = 0;
//Usar el photoshop para ver las variables con los colores correspondientes.
$verde = imagecolorallocate($thumbnail, 193, 0, 0); //Rojo=($thumbnail, 255, 0, 0)Blanco=255,255,255 Negro=0,0,0
//Si $i lo ponemos en 4 le hara cuatro lineas o marcos a la imagen
for($i=0; $i<2; $i++){
//Linea izquierda
imagefilledrectangle($thumbnail, $margen, $margen, $margen+$anchodelinea, $tamanothumb-$margen, $verde);
//Linea derecha
imagefilledrectangle($thumbnail, $tamanothumb-$margen-$anchodelinea, $margen, $tamanothumb-$margen, $tamanothumb-$margen, $verde);
//Linea de arriba
imagefilledrectangle($thumbnail, $margen, $margen, $tamanothumb-$margen-$anchodelinea, $margen+$anchodelinea, $verde);
//Linea de abajo
imagefilledrectangle($thumbnail, $margen, $tamanothumb-$margen-$anchodelinea, $tamanothumb-$margen-$anchodelinea, $tamanothumb-$margen, $verde);
$margen+=4;
}
//Salido Final
imagejpeg($thumbnail, "papax.jpg");
imagedestroy($thumbnail);
echo "<img src=\"papax.jpg\">";
?>
Saludos
Y estudia el script con mucho cuidado.
Franco
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.
Tema Cerrado




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