Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   PHP (http://www.forosdelweb.com/f18/)
-   -   formatear imagen con php (http://www.forosdelweb.com/f18/formatear-imagen-con-php-585242/)

layker 11/05/2008 14:44

formatear imagen con php
 
Hola, tengo un formulario para subir imagenes a mi servidor, y unos filtros para evitar que sobrepase el tamaño, y que acepte determinados formatos

pero no se como hacer para cambiar la resolucion de la imagen, porque al mostrar algunas en mi pagina me la descuadran,
he probado a poner unas dimensiones fijas, pero como cada imagen tiene distinta resolucion... algunas se ven estiradas...

y tambien como podria modificar el nombre de la imagen x defecto y ponerle uno aleatorio..

gracias de antemano. un saludo

jaronu 11/05/2008 15:38

Re: formatear imagen con php
 
hola

ESte es el codigo que utilizo para redimensionar una imagen sibida mediante form

Código PHP:

if(isset($_FILES['fichero']['name'])) {  

   if(
is_uploaded_file($_FILES['fichero']['tmp_name'])) {
   
   
   
//empieza la redimension, tomamos la imagen temporal subida
   
$info getimagesize($_FILES['fichero']['tmp_name']); 
   
//segun el caso sera jpg, gif, png
   
switch ($info[2]) {
  case 
1:
    
$imagen imagecreatefromgif($_FILES['fichero'] ['tmp_name']); break;
  case 
2:
    
$imagen imagecreatefromjpeg($_FILES['fichero'] ['tmp_name']); break;
  case 
3:
    
$imagen imagecreatefrompng($_FILES['fichero'] ['tmp_name']); break;
  
// etcétera // 
  
}

$original $imagen;
$original_w imagesx($original);
$original_h imagesy($original);

$max 175;  //AQUI PONES EL TAMAÑO DE LA IMAGEN A LO QUE QUIERAS

if($original_w>$original_h) {
    
$muestra_w $max;
    
$muestra_h intval(($original_h/$original_w)*$max);
    } else {
    
$muestra_w intval(($original_w/$original_h)*$max);
    
$muestra_h $max;
    }

$muestra imagecreatetruecolor($muestra_w,$muestra_h); 

imagecopyresampled($muestra,$original,0,0,0,0$muestra_w,$muestra_h,$original_w,$original_h);
imagedestroy($original); // aqui destruyo el original, pues no hace falta ya 

y para generar un nombre aleatorio podrias cambiar el nombre de maimagen por una cadena aleatoria con una funcion como esta:

Código PHP:

function genera_random($longitud){ 
    
$exp_reg="[^A-Z0-9]"
    return 
substr(eregi_replace($exp_reg""md5(rand())) . 
       
eregi_replace($exp_reg""md5(rand())) . 
       
eregi_replace($exp_reg""md5(rand())), 
       
0$longitud); 
}

$nombre_imagen genera_random(20);  //el parametro 20 indica la longitud de la cadena. 

Un saludo espeero que te sirva

layker 11/05/2008 16:17

Re: formatear imagen con php
 
muchas gracias, si m sirve
pero como puedo cambiar el nombre de la imagen, con que funcion???

layker 11/05/2008 16:40

Re: formatear imagen con php
 
ya no hace falta, lo he consguido... un despiste. muxas asiass

layker 11/05/2008 17:03

Re: formatear imagen con php
 
Porcierto podrias explicar este codigo con mas detalle?? eske no se lo que hace.. lo he colocado en mi pagina y no se k ace... un saludo
Código PHP:

if(isset($_FILES['fichero']['name'])) {  

   if(
is_uploaded_file($_FILES['fichero']['tmp_name'])) {
   
   
   
//empieza la redimension, tomamos la imagen temporal subida
   
$info getimagesize($_FILES['fichero']['tmp_name']); 
   
//segun el caso sera jpg, gif, png
   
switch ($info[2]) {
  case 
1:
    
$imagen imagecreatefromgif($_FILES['fichero'] ['tmp_name']); break;
  case 
2:
    
$imagen imagecreatefromjpeg($_FILES['fichero'] ['tmp_name']); break;
  case 
3:
    
$imagen imagecreatefrompng($_FILES['fichero'] ['tmp_name']); break;
  
// etcétera // 
  
}

$original $imagen;
$original_w imagesx($original);
$original_h imagesy($original);

$max 175;  //AQUI PONES EL TAMAÑO DE LA IMAGEN A LO QUE QUIERAS

if($original_w>$original_h) {
    
$muestra_w $max;
    
$muestra_h intval(($original_h/$original_w)*$max);
    } else {
    
$muestra_w intval(($original_w/$original_h)*$max);
    
$muestra_h $max;
    }

$muestra imagecreatetruecolor($muestra_w,$muestra_h); 

imagecopyresampled($muestra,$original,0,0,0,0$muestra_w,$muestra_h,$original_w,$original_h);
imagedestroy($original); // aqui destruyo el original, pues no hace falta ya 



La zona horaria es GMT -6. Ahora son las 20:42.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.