Foros del Web » Programando para Internet » PHP »

Calidad de Imagen PHP

Estas en el tema de Calidad de Imagen PHP en el foro de PHP en Foros del Web. Hola. Tengo una consulta sobre la calidad de imagen al redimensionar con PHP Tengo una función en php que cambia el tamaño de una foto ...
  #1 (permalink)  
Antiguo 07/04/2011, 10:24
 
Fecha de Ingreso: septiembre-2010
Mensajes: 147
Antigüedad: 13 años, 7 meses
Puntos: 3
Calidad de Imagen PHP

Hola. Tengo una consulta sobre la calidad de imagen al redimensionar con PHP

Tengo una función en php que cambia el tamaño de una foto grande a una pequeña, pero se pierde la calidad de la imagen y se ve extraña.

Existe alguna solución para mantener la calidad de imagen al redimensionar con php?

Dejo mi página donde aparecen las imágenes:

http://www.publicalibre.cl

Dejo mi código:


Código PHP:
Ver original
  1. if (isset($_FILES['file'])){
  2.        
  3.         if($_FILES['file']['tmp_name']){
  4.             // Creamos la cadena aletoria
  5.             $str = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890";
  6.             $cad = "";
  7.             for($i=0;$i<12;$i++) {
  8.                 $cad .= substr($str,rand(0,62),1);
  9.             }
  10.             // Fin de la creacion de la cadena aletoria
  11.        
  12.             $tamano         =   $_FILES[ 'file' ][ 'size' ]; // Leemos el tamaño del fichero
  13.             $tama&#241;o_max        =   "3000000"; // Tamaño maximo permitido [3MB]
  14.        
  15.             if( $tamano < $tama&#241;o_max){ // Comprovamos el tamaño
  16.                 $destino    =   'uploads/tmp' ; // Carpeta donde se guardata
  17.                 $sep        =   explode('image/',$_FILES["file"]["type"]); // Separamos image/
  18.                 $tipo       =   $sep[1]; // Optenemos el tipo de imagen que es
  19.  
  20.                 if($tipo == "PNG" || $tipo == "png" || $tipo == "gif" || $tipo == "pjpeg" || $tipo == "bmp" || $tipo == "GIF" || $tipo == "JPG" || $tipo == "jpg" || $tipo == "JPEG" || $tipo == "jpeg"){// Si el tipo de imagen a subir es el mismo de los permitidos, segimos. Puedes agregar mas tipos de imagen
  21.                
  22.                     move_uploaded_file ( $_FILES [ 'file' ][ 'tmp_name' ], $destino . '/' .$cad.'.'.$tipo);  // Subimos el archivo
  23.                     $_SESSION['Imagen'] = $cad.'.'.$tipo;
  24.                 }else{
  25.                     // Si la extensión no es correcta
  26.                     echo "NOTA: Imagen con extensión no permitida.";
  27.                 }
  28.                            
  29.             }else{
  30.                 // Si supera el tamaño de permitido lo desimos
  31.                 echo "NOTA: El archivo supera el tamaño permitido.";          
  32.             }
  33.                    
  34.         }
  35.  
  36.     if(isset($_SESSION['Imagen'])){
  37.        
  38.         function redimensionar_jpeg($img_original, $img_nueva, $img_nueva_anchura, $img_nueva_altura, $img_nueva_calidad)
  39.         {
  40.             // Crear una imagen desde el original
  41.             $img = ImageCreateFromJPEG($img_original);
  42.             // Crear una imagen nueva
  43.             $thumb = imagecreatetruecolor($img_nueva_anchura,$img_nueva_altura);
  44.             // Redimensiona la imagen original copiandola en la imagen
  45.             ImageCopyResized($thumb,$img,0,0,0,0,$img_nueva_anchura,$img_nueva_altura,ImageSX($img),ImageSY($img));
  46.             // Guardar la nueva imagen redimensionada donde indicia $img_nueva
  47.             ImageJPEG($thumb,$img_nueva,$img_nueva_calidad);
  48.             ImageDestroy($img);
  49.         }
  50.  
  51.        
  52.         $origen="uploads/tmp/".$_SESSION['Imagen']."";
  53.         $destino="uploads/".$_SESSION['Imagen']."";
  54.         $destino_temporal=tempnam("uploads/tmp/","tmp");
  55.  
  56.         redimensionar_jpeg($origen, $destino_temporal, 200, 200, 200);
  57.  
  58.         // Guardamos la imagen
  59.         $fp=fopen($destino,"w");
  60.         fputs($fp,fread(fopen($destino_temporal,"r"),filesize($destino_temporal)));
  61.         fclose($fp);
  62.        
  63.         // Borramos la Imagen de Origen y la de Destino Temporal /tmp
  64.         if($destino_temporal){
  65.             unlink($origen);
  66.             unlink($destino_temporal);
  67.         }  
  68.     }
  69.    
  70.     }
  #2 (permalink)  
Antiguo 07/04/2011, 10:51
Avatar de luis010182  
Fecha de Ingreso: julio-2009
Ubicación: Argentina - Capital Federal
Mensajes: 382
Antigüedad: 14 años, 9 meses
Puntos: 27
Respuesta: Calidad de Imagen PHP

proba con la clase thumbnails
http://blog.unijimpe.net/generar-thumbnails-con-php/
  #3 (permalink)  
Antiguo 07/04/2011, 10:54
 
Fecha de Ingreso: septiembre-2010
Mensajes: 147
Antigüedad: 13 años, 7 meses
Puntos: 3
Respuesta: Calidad de Imagen PHP

Muchas gracias compañero, te dejo un karma !

buena información.
  #4 (permalink)  
Antiguo 07/04/2011, 16:26
Avatar de Garot  
Fecha de Ingreso: marzo-2010
Ubicación: Mar de Dirac
Mensajes: 121
Antigüedad: 14 años, 1 mes
Puntos: 7
Respuesta: Calidad de Imagen PHP

Aprovecho para preguntar ya que es clase que sugerio luis010182 estoy desde ayer intentando hacerla funcionar y todavia no consigo.



Tengo la clase en el archivo "resize.php".

Despues cree un archivo "redimensionar.php" en este puse solamente este código:

Código PHP:
<?php 
include("resize.php");
$thumb=new thumbnail("marado.jpg");
$thumb->size_width(200);
$thumb->show();
?>
Supuestamente ahi, cuando lo pruebo en el servidor local me tiene que mostrar la imagen redimendionada, cierto?

Lo único que sale es:"http://localhost/Carpetadelarchivo/redimensionar.php"

La imagen no aparece.....!!!



Por favor ZeThito o luis010182 si ustedes ya la hicieron funcionar ayudenme...

Si tienen algun ejemplo funcionando mejor todavia.

Gracias!
  #5 (permalink)  
Antiguo 07/04/2011, 17:09
Avatar de luis010182  
Fecha de Ingreso: julio-2009
Ubicación: Argentina - Capital Federal
Mensajes: 382
Antigüedad: 14 años, 9 meses
Puntos: 27
Respuesta: Calidad de Imagen PHP

asi como tenes el ejemplo esta bien, lo acabo de probar y me da ok.
el archivo marado lo tenes en el mismo directorio no?
lo que hace show() es ejecutar esto http://ar2.php.net/manual/en/function.imagejpeg.php
pero en todo caso guarda y despues mostra con el tag <img> para ver si ten genera la redimencion de la imagen
  #6 (permalink)  
Antiguo 07/04/2011, 17:27
Avatar de Garot  
Fecha de Ingreso: marzo-2010
Ubicación: Mar de Dirac
Mensajes: 121
Antigüedad: 14 años, 1 mes
Puntos: 7
Respuesta: Calidad de Imagen PHP

Si, la dirección de la imagen esta bien, esta en el mismo directorio.

Bueno, si me decis que funciona me quedo mas tranquilo, a seguir buscando entonces....la verdad que ya estoy casi desistiendo pero necesito hacerlo funcionar.


Gracias luis010182
  #7 (permalink)  
Antiguo 08/04/2011, 10:53
Avatar de Garot  
Fecha de Ingreso: marzo-2010
Ubicación: Mar de Dirac
Mensajes: 121
Antigüedad: 14 años, 1 mes
Puntos: 7
Respuesta: Calidad de Imagen PHP

Lo hice funcionar!!!

Tuve que agregarle esta linea:

header("Content-type: image/jpeg");

quedo asi
Código PHP:
<?php 
header
("Content-type: image/jpeg");

include(
"resize.php");
$thumb=new thumbnail("marado.jpg");
$thumb->size_width(200);
$thumb->show();

?>
Lo pongo acá por si a alguien le ayuda

Saludos!

Etiquetas: calidad
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 10:57.