Foros del Web » Programando para Internet » PHP »

Hacer imagenes más pequeñas

Estas en el tema de Hacer imagenes más pequeñas en el foro de PHP en Foros del Web. Buenas, pues a ver si a alguien se le ocurre algo... el caso es que quiero que cuando alguien suba una imagen a través de ...
  #1 (permalink)  
Antiguo 09/07/2004, 05:00
 
Fecha de Ingreso: julio-2003
Mensajes: 97
Antigüedad: 20 años, 9 meses
Puntos: 0
Hacer imagenes más pequeñas

Buenas, pues a ver si a alguien se le ocurre algo...

el caso es que quiero que cuando alguien suba una imagen a través de un formulario, guarde esta en el servidor pero con un ancho determinado...

entonces, marcar directamente un width en el html no me sirve, porque es una chapuza, claro... jeje... y poder, se que se puede hacer, xq uso el 4images para un portal de fotos y usando el netpbm lo consigue...

además, necesito marcarle solo el ancho y que el alto lo ponga automatico guardando las proporciones... poz... eso, pregunto:

¿sabe alguien como hacerlo de alguna forma sin tener q usar netpbm, imagemagik o alguno de estos?

o si no hay otra forma, alguien sabe donde puedo encontrar ayuda, un manual o algo?? y... es muy complicao??

Gracias y un saludo ;)
  #2 (permalink)  
Antiguo 09/07/2004, 05:39
pr0
 
Fecha de Ingreso: marzo-2004
Mensajes: 687
Antigüedad: 20 años
Puntos: 28
Hola

Mirate esto tal vez te sirva:

http://es2.php.net/manual/es/functio...opyresized.php

Saludos
  #3 (permalink)  
Antiguo 12/07/2004, 04:54
 
Fecha de Ingreso: julio-2003
Mensajes: 97
Antigüedad: 20 años, 9 meses
Puntos: 0
Mil gracias :) :)
yo creo que si que me va a servir... he encontrao un manual para usar el imagecopyresized q parece estar bastante bien...

http://guebmaster.com/archives/000016.html
  #4 (permalink)  
Antiguo 12/07/2004, 05:06
 
Fecha de Ingreso: julio-2003
Mensajes: 97
Antigüedad: 20 años, 9 meses
Puntos: 0
puf... pues lo acabo de probar, pero deja la imagen hecha una pena... pierde calidad por un tubo, yt eso que he probado a ponerle de calidad 80 o incluso 100... y además, no deja modificar el tamaño sin tener que darle por ejemplo el alto y que el guarde las proporciones... cachis...

sabeis otro metodo?...
ah, gracias de todos modos, eh ;)
  #5 (permalink)  
Antiguo 12/07/2004, 09:16
 
Fecha de Ingreso: julio-2004
Mensajes: 3
Antigüedad: 19 años, 9 meses
Puntos: 0
Exclamación Regla de 3

La verdad es que es un problema de simple solución, al momento de crear la imagen dinamicamente tienes que ocupar una regla de 3 matemática así el alto será relativo al ancho, si deseas hacer redimensiones mas complejas podrias ocupar varias IF:

Ej:

Ancho --> 200

Largo --> X

$Ancho_Nuevo = 150;
$Alto_Nuevo = $Ancho_Nuevo * $Alto_Real / $Ancho_Real;
  #6 (permalink)  
Antiguo 13/07/2004, 03:41
 
Fecha de Ingreso: julio-2003
Mensajes: 97
Antigüedad: 20 años, 9 meses
Puntos: 0
uy, es verdad... lo he probao y va dbuti ;)
y el problema de la mala calidad, lo he solucionao con ImageCreateTrueColor($ancho,$alto)

no es que quede una calidad de la leche, pero no está mal ;)

mil gracias a todos, ya tengo lo que queria :D
  #7 (permalink)  
Antiguo 13/07/2004, 09:13
 
Fecha de Ingreso: julio-2004
Mensajes: 3
Antigüedad: 19 años, 9 meses
Puntos: 0
Mejorar la calidad de imagen

Mira, la funcion ImageCopyResampled() te va a permitir dejar las imagenes con una calidad óptima... Aquí te dejo un ejemplo que ocupé para una página:


Código PHP:
if ($tipo == "servicios"){

    if (!
file_exists($direccion)) { $direccion $carfotos "nech.jpg";}


    
$fuente     = @imagecreatefromjpeg("administracion/fotos/$id"); 
    
$imgAncho imagesx ($fuente); 
    
$imgAlto    imagesy($fuente); 

    if (
$imgAlto == $imgAncho){$alto 150$ancho 150;}
    if (
$imgAncho $imgAlto){$ancho 150$alto $ancho $imgAlto $imgAncho;}
    if (
$imgAlto $imgAncho){$alto 150$ancho $alto $imgAncho $imgAlto;}


    
$imagen ImageCreateTrueColor($ancho$alto);
    
ImageCopyResampled($imagen$fuente0000$ancho$alto$imgAncho$imgAlto); 
    
imageJpeg($imagen''70); 



Última edición por simonurzua; 13/07/2004 a las 09:30
  #8 (permalink)  
Antiguo 14/07/2004, 01:16
 
Fecha de Ingreso: julio-2003
Mensajes: 97
Antigüedad: 20 años, 9 meses
Puntos: 0
Leñe, pues es verdad... queda dbuti!!
me ha quedao perfecto ;)

pero una preguntilla más, jeje... y simple curiosidad, para que sirve ImageCopyResized si ImageCopyResampled te hace exactamente lo mismo pero te deja las imagenes con más calidad?... q tonteria, no?...

Mill gracias ;)

Por si alguien quiere ver la pedacho de calidad de las imagenes: www.kualda.com
todas las que aparecen en portada son subidas por usuarios y el script las pone con un ancho de 150 px
  #9 (permalink)  
Antiguo 14/07/2004, 01:23
 
Fecha de Ingreso: julio-2003
Mensajes: 97
Antigüedad: 20 años, 9 meses
Puntos: 0
ah, así es como me quedó a mi, por si a alguien le sirve... la imagen llega de un formulario

Código PHP:
    $absolute_path_imagen "/home/.edhessaheater/tracker.kualda.com/temps";
    
    if (
$image != "") {
    
    if (
file_exists("$absolute_path_imagen/$image_name")) {
    die(
"Este archivo ya existe, cambia el nombre de la imagen");
    }
    
    
$limitedext = array(".jpg"); //extensiones permitidas
    
$ext strrchr($image_name,'.');
    if (!
in_array($ext,$limitedext)) {
    die(
"El formato de la imagen tiene que ser JPG");
    }
        
    
$nombre=$image_name;
    @
copy($image"$absolute_path_imagen/$image_name") or die("La imagen no puede ser subida al servidor...");
    
    } else {
    die(
"Tienes que seleccionar una imagen para subir");
    }

    
    
$fuente imagecreatefromJpeg("temps/$nombre");
    
$imgAncho imagesx ($fuente);
    
$imgAlto =imagesy($fuente);
    
    
$ancho 150;
    
$alto $imgAlto*$ancho/$imgAncho;
    
    
    
$imagen ImageCreateTrueColor($ancho,$alto);
    
    
ImageCopyResampled($imagen,$fuente,0,0,0,0,$ancho,$alto,$imgAncho,$imgAlto);
    
imageJpeg($imagen,"/home/.edhessaheater/kualda.com/imagenes/torrents/$nombre"); 
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 07:13.