Foros del Web » Programando para Internet » PHP »

Pérdida de calidad de imagen al redimensionarla

Estas en el tema de Pérdida de calidad de imagen al redimensionarla en el foro de PHP en Foros del Web. Muy buenas. Tengo hecho una función, para que redimensione una imagen, cosa que hace sin problema. Lo que ocurre, es que al redimensionar, pierde demasiada ...
  #1 (permalink)  
Antiguo 08/01/2005, 10:10
Avatar de pzin
Moderata 😈
 
Fecha de Ingreso: julio-2002
Ubicación: Islas Canarias
Mensajes: 10.488
Antigüedad: 21 años, 8 meses
Puntos: 2114
Pérdida de calidad de imagen al redimensionarla

Muy buenas.

Tengo hecho una función, para que redimensione una imagen, cosa que hace sin problema. Lo que ocurre, es que al redimensionar, pierde demasiada calidad la imagen.

Pego la función aquí:
Código PHP:
function redimensionar_jpeg($img_original$img_nueva$img_nueva_anchura$img_nueva_altura$img_nueva_calidad) { 

$img ImageCreateFromJPEG($img_original); 

$thumb ImageCreate($img_nueva_anchura,$img_nueva_altura); 
ImageCopyResized($thumb,$img,0,0,0,0,$img_nueva_anchura,$img_nueva_altura,ImageSX($img),ImageSY($img)); 

ImageJPEG($thumb,$img_nueva,$img_nueva_calidad); 


Luego la llamada, es esta:
Código PHP:
redimensionar_jpeg('imagen.jpg','imagennueva.jpg',500,400,100); 
Y como ya digo, redimensiona bien. He probado a poner la calidad a 200, a ver que pasaba, y sigue igual de horrenda la calidad final.

Gracias por la ayuda de antemano.
__________________
(:
  #2 (permalink)  
Antiguo 08/01/2005, 11:27
Avatar de FuLaNo_  
Fecha de Ingreso: mayo-2003
Ubicación: Don Torcuato, Buenos Aires, Argentina
Mensajes: 1.250
Antigüedad: 20 años, 11 meses
Puntos: 2
es que la calidad va solo de 0 a 100, en teoria se tendría que ver bien con 100 de calidad.. aunque yo estoy teniendo problemas similares...
__________________
I Love Programming...
  #3 (permalink)  
Antiguo 08/01/2005, 11:54
Avatar de pzin
Moderata 😈
 
Fecha de Ingreso: julio-2002
Ubicación: Islas Canarias
Mensajes: 10.488
Antigüedad: 21 años, 8 meses
Puntos: 2114
Yo he probado, 80, 100, y luego 200... Y se ve siempre igual de mal el resultado final de la redimensión. Y es bastante inacetable.

Por algo del código, no puede ser, ¿no?
__________________
(:
  #4 (permalink)  
Antiguo 08/01/2005, 12:29
 
Fecha de Ingreso: enero-2004
Ubicación: Santiago
Mensajes: 127
Antigüedad: 20 años, 3 meses
Puntos: 0
Podrias colocar aquí que version de la librería GD estas ocupando, si tiees una posterior a la 2.0 tendras que seguir ocupando la funcion ImageCreate(), desde la version 2.0 puedes ocupar la función imageCreateTrueColor(), la cuál te crea una imagen de color verdadero.

Saludos y suerte.

PD: puedes ocupar la función gd_info() para ver informacion de la librería.
  #5 (permalink)  
Antiguo 08/01/2005, 14:51
Avatar de pzin
Moderata 😈
 
Fecha de Ingreso: julio-2002
Ubicación: Islas Canarias
Mensajes: 10.488
Antigüedad: 21 años, 8 meses
Puntos: 2114
Eso era HiperJP. No sabía que había que usar una función distinta.
Eso sí, ahora me da otro error:
Código:
Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 2000 bytes)
Que supongo, no tiene que ver con la función... A ver que dice Google.

Gracias por la ayuda
__________________
(:
  #6 (permalink)  
Antiguo 08/01/2005, 14:59
Avatar de pzin
Moderata 😈
 
Fecha de Ingreso: julio-2002
Ubicación: Islas Canarias
Mensajes: 10.488
Antigüedad: 21 años, 8 meses
Puntos: 2114
Ya he mirado lo que era. Algo de la memoria del php.

Encontré que se podía cambiar en el mismo php.ini, y en segundo lugar, también añadiendo en el .htaccess la linea:
php_value memory_limit 16777216
para ponerla en 16Mbs, por ejemplo, como he hecho yo.
Creo que por defecto vienen 8, por lo que he leido.

Yo usé la del .htaccess, ya que era mas cómodo a priori, y ya no da el error de antes.

Gracias otra vez, un saludo.
__________________
(:
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 14:52.