Foros del Web » Programando para Internet » PHP »

Redimensionar una imagen con php, y no morir en el intento.

Estas en el tema de Redimensionar una imagen con php, y no morir en el intento. en el foro de PHP en Foros del Web. Buenas. Antes que nada, siento preguntar algo que seguro que han preguntado mas de una vez, pero por muchos post y tutoriales que leo no ...
  #1 (permalink)  
Antiguo 19/05/2011, 07:00
 
Fecha de Ingreso: enero-2008
Mensajes: 14
Antigüedad: 16 años, 9 meses
Puntos: 0
Redimensionar una imagen con php, y no morir en el intento.

Buenas.

Antes que nada, siento preguntar algo que seguro que han preguntado mas de una vez, pero por muchos post y tutoriales que leo no consigo comprender como redimensionar una imagen del servidor y guardarla.

Segun he estado leyendo, deberia ser algo tan simple como:

Código PHP:
Imagecopyresized($Nueva_Imagen$Destino0000600400$Ancho$Alto);

imagejpeg($Nueva_Imagen$Nuevo_Folder75); 
Incluso tengo un codigo de internet, de un portal de tutoriales, que deberia funcionar, pero no consigo que haga nada

Código PHP:
<?php
// Variables que indican el archivo de la imagen y el nuevo tamano
$filename 'test.jpg';
$percent 0.5;

// Content-type para el navegador
header('Content-type: image/jpeg');

// Se obtienen las nuevas dimensiones
list($width$height) = getimagesize($filename);
$newwidth $width $percent;
$newheight $height $percent;

// Cargar la imagen
$thumb imagecreate($newwidth$newheight);
$source imagecreatefromjpeg($filename);

// Redimensionar
imagecopyresized($thumb$source0000$newwidth$newheight$width$height);

// Mostrar la nueva imagen
imagejpeg($thumb);

?>
Nose que estoy haciendo mal y porque no funciona correctamente, pero a la imagen no le afecta nada de eso. Nose mucho de php, por lo que estoy bastante limitado, y si el codigo es muy complejo me acabo perdiendo.

Una vez mas, perdonen mi torpeza!

Espero que puedan ayudarme.

Gracias por adelantado!
  #2 (permalink)  
Antiguo 19/05/2011, 07:05
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: Redimensionar una imagen con php, y no morir en el intento.

Pasa por el área de aportes hay un tema que te puede ayudar en lo que estás pidiendo.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 19/05/2011, 07:12
 
Fecha de Ingreso: mayo-2011
Mensajes: 1
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: Redimensionar una imagen con php, y no morir en el intento.

Hola, soy italiano perdona mi castellano.
El codego me parece que utiliza los GD libraries de php, entonces la primera cosa es comprobar si estan instaladas.
Con la funcion: phpinfo(); puedes ver todo lo que està instalado con el php.
También puede ser un otro problema como que no encontra el file.
Una pregunta: sale un mensaje o la pagina es blanca?
  #4 (permalink)  
Antiguo 19/05/2011, 07:51
Avatar de JDEM  
Fecha de Ingreso: octubre-2008
Ubicación: www....
Mensajes: 154
Antigüedad: 16 años, 1 mes
Puntos: 8
Respuesta: Redimensionar una imagen con php, y no morir en el intento.

Saludos....

Justo iba a postear sobre esto por que estoy apunto de morir en el intento .

Mi problema no es para redireccionar mi problema es con imagenes .png debido al alfa cuando la redirecciono me coloca el fondo en negro para evitar esto eh realizado las siguientes pruebas:

FUNCION COMPLETA CON RESULTADO ESPERADOS PERO PROBLEMAS CON EL PNG

Código PHP:
function resizeImage($image,$tmax){
    list(
$imagewidth$imageheight$imageType) = getimagesize($image);
    
$scale $tmax/$imagewidth;
    
$imageType image_type_to_mime_type($imageType);
    
$newImageWidth ceil($imagewidth $scale);
    
$newImageHeight ceil($imageheight $scale);
    
$newImage imagecreatetruecolor($newImageWidth,$newImageHeight);
    switch(
$imageType) {
        case 
"image/gif":
                    
$source=imagecreatefromgif($image);
        break;
        case 
"image/pjpeg":
        case 
"image/jpeg":
        case 
"image/jpg":
                    
$source=imagecreatefromjpeg($image);
        break;
        case 
"image/png":
                    
$source=imagecreatefrompng($image);
                    
$negro imagecolorallocate($newImage000);
                    
imagecolortransparent($newImage$negro);
                    
imagefilledrectangle($newImage00$newImageWidth$newImageHeight0);
        break;
      }
    
imagecopyresampled($newImage,$source,0,0,0,0,$newImageWidth,$newImageHeight,$imagewidth,$imageheight);
    switch(
$imageType) {
            case 
"image/gif":
                
imagegif($newImage,$image);
            break;
            case 
"image/pjpeg":
            case 
"image/jpeg":
            case 
"image/jpg":
                
imagejpeg($newImage,$image,90);
            break;
            case 
"image/png":
            case 
"image/x-png":
                
imagepng($newImage$image);
            break;
        }
    
chmod($image0777);
    return 
$image;

Al hacer esto la img png conserva parte del alpha pero todavia conserva reciduos del negro , m gustaria saber si alguien le ah encontrado una solucion completa a esto que me pueda ayudar gracias...
  #5 (permalink)  
Antiguo 19/05/2011, 07:57
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: Redimensionar una imagen con php, y no morir en el intento.

¿Trataste el ejemplo que te indiqué en el tema que está en el área de aportes?
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #6 (permalink)  
Antiguo 19/05/2011, 08:53
 
Fecha de Ingreso: enero-2008
Mensajes: 14
Antigüedad: 16 años, 9 meses
Puntos: 0
Respuesta: Redimensionar una imagen con php, y no morir en el intento.

Pues, lo he probado en mi servidor interno en Wamp. he hecho un php info y todo parece correcto:

Cita:
gd

GD Support enabled
GD Version bundled (2.0.34 compatible)
FreeType Support enabled
FreeType Linkage with freetype
FreeType Version 2.3.9
GIF Read Support enabled
GIF Create Support enabled
JPEG Support enabled
libJPEG Version 6b
PNG Support enabled
libPNG Version 1.2.37
WBMP Support enabled
XBM Support enabled

Directive Local Value Master Value
gd.jpeg_ignore_warning
Los archivos estan bien enlazados. La pantalla de navegador aparece en blanco.

Gracias por responder!
  #7 (permalink)  
Antiguo 19/05/2011, 08:54
 
Fecha de Ingreso: enero-2008
Mensajes: 14
Antigüedad: 16 años, 9 meses
Puntos: 0
Respuesta: Redimensionar una imagen con php, y no morir en el intento.

Mirare ese post de aportes, gracias!
  #8 (permalink)  
Antiguo 19/05/2011, 10:15
Avatar de JDEM  
Fecha de Ingreso: octubre-2008
Ubicación: www....
Mensajes: 154
Antigüedad: 16 años, 1 mes
Puntos: 8
Respuesta: Redimensionar una imagen con php, y no morir en el intento.

Acabo de probar EasyThumbnail que esta en los apartos y me pasa exactamente lo mismo las imagenes png quedan con un fondo negro!!!

Alguna otra ayuda???
  #9 (permalink)  
Antiguo 19/05/2011, 11:47
 
Fecha de Ingreso: enero-2011
Ubicación: DF
Mensajes: 898
Antigüedad: 13 años, 9 meses
Puntos: 155
Respuesta: Redimensionar una imagen con php, y no morir en el intento.

ya probaste's' lo que te dijeron en aportes?

http://www.forosdelweb.com/f18/aport...agenes-565428/
__________________
No me interesan ni las gracias ni los karmas , pero si que se genere conocimiento, si se dio con la respuesta por favor confirmalo
  #10 (permalink)  
Antiguo 19/05/2011, 12:18
Avatar de JDEM  
Fecha de Ingreso: octubre-2008
Ubicación: www....
Mensajes: 154
Antigüedad: 16 años, 1 mes
Puntos: 8
Respuesta: Redimensionar una imagen con php, y no morir en el intento.

Amigo mogurbon el enlace que recomiendas es una funcion que solo cambia el tamaño de la imagen para mostrar, la funcion que quiero desarrollar trata de crear una imagen nueva segun la imagen dada, esto para evitar tener que descargar una imagen muy grande que tarde mas....
  #11 (permalink)  
Antiguo 19/05/2011, 13:30
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: Redimensionar una imagen con php, y no morir en el intento.

Pero es que en realidad hace una copia con tamaño nuevo y menos bytes. No entiendo la diferencia de lo que quieres hacer con lo que está demostrado en el enlace que te indicaron
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #12 (permalink)  
Antiguo 19/05/2011, 13:49
Avatar de JDEM  
Fecha de Ingreso: octubre-2008
Ubicación: www....
Mensajes: 154
Antigüedad: 16 años, 1 mes
Puntos: 8
Respuesta: Redimensionar una imagen con php, y no morir en el intento.


Código PHP:
<?php

/*Función REDIMENSIONAR
Toma la ruta de una imagen, un valor máximo 
de ancho y otro máximo de alto. Si la imagen 
rebasa dichas medidas, calcula las medidas 
máximas que podría tener manteniendo el 
formato original para no salirse de las medidas
indicadas.

Finalmente la función imprime la imagen.
*/

function redimensionar($ruta,$ancho,$alto){

//Obtenemos las dimensiones, la ruta es absoluta.
$dim getimagesize($ruta);
/*getimagesize() pasa un array a la variable
$dim tal que $dim[0] contiene el ancho de la imagen 
y dim[1] contiene el alto.*/
if($dim[1]){
//Para asegurarnos de que dim[1] es diferente de cero
$cociente $dim[0] / $dim[1];
}
if(
$alto){
//Para asegurarnos de que alto es diferente de cero
$coc_max $ancho $alto;
}

    if((
$dim[0]<=$ancho)&&($dim[1]<=$alto)){
    
/*En este caso no pasa nada y 
    la imagen se imprime con su tamaño original*/
    
$ancho $dim[0];
    
$alto $dim[1];
    }else{
        if(
$cociente>=$coc_max){
        
/*En este caso el factor más restrictivo
        va a ser el ancho de la foto*/
        
$alto $ancho $cociente;
        }else{
        
/*En este caso el factor restrictivo 
        va a ser la altura de la foto*/
        
$ancho $alto $cociente;
        }
    }
    echo 
"<img src='$ruta' width='$ancho' height='$alto'>";
    
}
?>
En que parte de ese codigo creas una nueva imagen ????? en ninguna, fijate que la salida es la misma ruta que le envias con las medidas que calculas en ningun momento creas una nueva imagen por ende una imagen que pesa 400KB tienes que descargar los 400kb para mostrarla en pequeno, lo que yo quiero hacer es una imagen de 400kb se convierta en un archivo imagen de 12kb aproximadamente (si mi tamaño maximo es de 200px de ancho) que son los kb que voy a descargar no los 400kb de la imagen completa.
  #13 (permalink)  
Antiguo 19/05/2011, 14:08
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: Redimensionar una imagen con php, y no morir en el intento.

Ehhh, ese no es el código que te indiqué Es este http://www.forosdelweb.com/f68/aport...agenes-912637/ Ahí sí se crea

No me había fijado que te indicaron otro código
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #14 (permalink)  
Antiguo 20/05/2011, 02:36
 
Fecha de Ingreso: enero-2008
Mensajes: 14
Antigüedad: 16 años, 9 meses
Puntos: 0
Respuesta: Redimensionar una imagen con php, y no morir en el intento.

Abimaelrc, tu codigo parece muy interesante y sencillo de usar.

Pero creo el archivo ResizePicture.php con el codigo que comentas que conseguiste en internet. Luego creo otro archivo con el metodo para redimensionar el alto y automáticamente disminuya el ancho, o el del ancho y q automaticamente dismunuya el alto, y me saca error siempre en la linea 11, la linea del require, he probado a cambiar el require, a poner un include, y nada, siempre igual.

El error es este:

"Parse error: parse error in C:\wamp\www\Plantillas\resize3.php on line 11"

Espero que puedas ayudarme

Saludos y gracias!
  #15 (permalink)  
Antiguo 20/05/2011, 02:55
 
Fecha de Ingreso: enero-2008
Mensajes: 14
Antigüedad: 16 años, 9 meses
Puntos: 0
Respuesta: Redimensionar una imagen con php, y no morir en el intento.

Porfin conseguir comprenderlo, y consegui un codigo que funciona.

les enlazo al tutorial para todos los que le sirva :

http://www.blasten.com/contenidos/?id=18834

A mi me ha ayudado mucho, aunque hay redimensiona las imagenes a una cifra en concreto, como yo queria un porcentaje, pues lo modifique un poco:

Código PHP:
function redimensionar_jpeg($img_original$img_nueva$img_nueva_anchura$img_nueva_altura,
$img_nueva_calidad) {

// crear imagen desde original
$img ImageCreateFromJPEG($img_original);

// crear imagen nueva
$thumb ImageCreate($img_nueva_anchura,$img_nueva_altura);

// redimensionar imagen original copiandola en la imagen
ImageCopyResized($thumb,$img,0,0,0,0,$img_nueva_anchura,$img_nueva_altura,

ImageSX($img),ImageSY($img));

// guardar la imagen redimensionada donde indicia $img_nueva
ImageJPEG($thumb,$img_nueva,$img_nueva_calidad);

}
redimensionar_jpeg('test.jpg','test3b.jpg',$width*0.5,$height*0.5,25);

?> 
Asi se reduce el ancho y el alto al 50 porciento, y la calidad a 25. Funciona genial!!

Espero que les ayude a todos los que tengan el mismo problema que yo!

Saludos!
  #16 (permalink)  
Antiguo 20/05/2011, 05:38
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: Redimensionar una imagen con php, y no morir en el intento.

Aparte de que lo lograste con otro codigo, que tenias antes de la linea 11.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #17 (permalink)  
Antiguo 20/05/2011, 07:10
Avatar de JDEM  
Fecha de Ingreso: octubre-2008
Ubicación: www....
Mensajes: 154
Antigüedad: 16 años, 1 mes
Puntos: 8
Respuesta: Redimensionar una imagen con php, y no morir en el intento.

yo sigo igual sin poder solucionar el alpha de png.

Abimaelrc probe el enlace que me diste y el resultado es el mismo....

Mi version GD es 2.1.9, mas nadie tiene este problema con los PNG???

Etiquetas: img, redimensionar, reducir
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 10:47.