Foros del Web » Programando para Internet » PHP »

Problemas con thumbnails proporcionados

Estas en el tema de Problemas con thumbnails proporcionados en el foro de PHP en Foros del Web. Hola buenos días, Tengo un pequeño problema con un script que redimensiono al mismo tamaño las imagenes por ejemplo de 200x200 que da igual el ...
  #1 (permalink)  
Antiguo 10/07/2013, 04:47
Avatar de syntex  
Fecha de Ingreso: noviembre-2002
Ubicación: Cataluña
Mensajes: 978
Antigüedad: 21 años, 5 meses
Puntos: 4
Problemas con thumbnails proporcionados

Hola buenos días, Tengo un pequeño problema con un script que redimensiono al mismo tamaño las imagenes por ejemplo de 200x200 que da igual el tamaño que tenga la imagen original.

El problema que veo que me sale una ralla negra dentro del thumbnails.

Os paso el script a ver si alguien me puede ayudar.

Código PHP:
<?
# Variables para la class
# **********************************************************    
$ruta_original "imagenes/";
$ruta_thumnbails "imagenes/comp/";

$width_original    200;
$height_original    200;
$quality 90;
$background "255,255,255";

$name_original "4242006180812.jpg";
$name_thumnbails "4242006180812.jpg";

$file         $ruta_original.$name_original;
$savePath   $ruta_original.$ruta_thumnbails;
        
# Obtenemos la informacion de la imagen, el array info tendra los siguientes indices:
# [0] ancho de la imagen
# [1] alto de la imagen
# **********************************************************
$info getimagesize($file);
        
# Extensión del archivos
# **********************************************************
$extension explode(".",$name_original); 
$ext count($extension)-1

# COMPRIMIR JPG
# **********************************************************
if(strcasecmp($extension[$ext],"jpg") == || strcasecmp($extension[$ext],"jpeg") == 0
            
$image = @imagecreatefromjpeg($file);
            
elseif(
strcasecmp($extension[$ext],"png") == 0
           
$image = @imagecreatefrompng($file);
            
elseif(
strcasecmp($extension[$ext],"gif") == 0
               
$image = @imagecreatefromgif($file);


if(
$info[0] == $info[1])
        {
            
$xpos 0;
            
$ypos 0;
            
            
$width  $info[1];
            
$height $info[1];
            
        }else{
            
            if(
$info[0] < $info[1])
            {
              
//imagen horizontal
              
$xpos ceil(($info[0] - $info[1]) /2);
              
$ypos 0;
              
$width  $info[1];
              
$height $info[1];
            }else{
              
//imagen vertical
              
$xpos 0;
              
$ypos ceil(($info[1] - $info[0]) /2);
              
$width  $info[0];
              
$height $info[0];
            }
        }

# Creamos una nueva imagen cuadrada con las dimensiones que queremos:
# **********************************************************
$image_new = @imagecreatetruecolor($width_original$height_original);

# bgcolor
# **********************************************************
$bgcolor imagecolorallocate($image_new$background);


# **********************************************************
imagecopyresampled($image_new$image00$xpos$ypos$width_original$height_original$width$height);        

# Relleno de color
# **********************************************************
imagefill($image_new00$bgcolor);
imagefill($image_new, ($width_original-1), 0$bgcolor);
imagefill($image_new0, ($width_original-1), $bgcolor);

# Guardamos la nueva imagen como jpg con una quality del 85%
# **********************************************************
        
if(strcasecmp($extension[$ext],"jpg") == || strcasecmp($extension[$ext],"jpeg") == 0
        {
               if (
$exito = @imagejpeg($image_new$ruta_thumnbails.$name_thumnbails$quality))
            {
                @
imagedestroy($image_new); 
                return 
true
            }
        }    
        elseif(
strcasecmp($extension[$ext],"png") == 0
        {
               if (
$exito = @imagepng($image_new$ruta_thumnbails.$name_thumnbails, ($quality/10)))
            {
                @
imagedestroy($image_new); 
                return 
true
            }
        }
        elseif(
strcasecmp($extension[$ext],"gif") == 0)
        {
               if (
$exito = @imagegif($image_new$ruta_thumnbails.$name_thumnbails$quality))
            {
                @
imagedestroy($image_new); 
                return 
true;
            }
        }
        elseif(
strcasecmp($extension[$ext],"bmp") == 0)
        {
            @
copy ($file$ruta_thumnbails.$name_thumnbails);
            return 
true
        }



?>
__________________
------------------------------------------------
La paciencia es el rey de la ciencia
------------------------------------------------

  #2 (permalink)  
Antiguo 10/07/2013, 09:49
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Problemas con thumbnails proporcionados

Con tantas arrobas para ocultar mensajes de error será difícil siquiera buscar la causa del problema.

Código PHP:
Ver original
  1. // No muestra error:
  2. @imagecreatefromjpg();
  3.  
  4. // Sí muestra error:
  5. imagecreategromjpg();

Elimina todas esas arrobas y comienza a probar; cuéntanos si ves algún mensaje de error y qué dice.
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 10/07/2013, 11:43
Avatar de quinqui  
Fecha de Ingreso: agosto-2004
Ubicación: Chile!
Mensajes: 776
Antigüedad: 19 años, 8 meses
Puntos: 56
Respuesta: Problemas con thumbnails proporcionados

Holas, syntex.

Aparte, podrías también indicarnos dónde es que te aparece esa línea negra, de qué grosor es, inclinación, etc., porque por ejemplo, si aparece pegada a uno de los lados, de pronto sólo es que al redimensionar la imagen original, te sobra espacio sin cubrir en el cuadrado... quién sabe, necesitamos más datos, incluso una captura nos vendría bien.

Saludos!
__________________
pipus.... vieeeeeji plomius!!!
*quinqui site*
  #4 (permalink)  
Antiguo 10/07/2013, 22:35
Avatar de syntex  
Fecha de Ingreso: noviembre-2002
Ubicación: Cataluña
Mensajes: 978
Antigüedad: 21 años, 5 meses
Puntos: 4
Respuesta: Problemas con thumbnails proporcionados

Tengo las @ eliminadas del script y no reporta ningun error:

La imagen original:




La imagen con la raya en el thumbnails:




Es raro porque me pasa con muchísimas imagenes.

Muchísimas gracias
__________________
------------------------------------------------
La paciencia es el rey de la ciencia
------------------------------------------------

  #5 (permalink)  
Antiguo 11/07/2013, 07:15
Avatar de quinqui  
Fecha de Ingreso: agosto-2004
Ubicación: Chile!
Mensajes: 776
Antigüedad: 19 años, 8 meses
Puntos: 56
Respuesta: Problemas con thumbnails proporcionados

Viendo de nuevo el código y las imágenes mostradas (que al final sí era algo como lo que ya te había preguntado), prueba a cambiar el uso de la función ceil() por otra similar, pues parece ser cosa de míseros píxeles el asunto. Prueba realizar el cálculo de $xpos e $ypos usando round() o floor(). Yo siempre uso floor() cuando trabajo con imágenes y ese tipo de cosas. Ahí nos cuentas cómo te va con esa pequeña prueba.

Saludos!

Editado: Lo que me entró en duda viendo de nuevo el código, es por qué haces:
Código PHP:
imagefill($image_new00$bgcolor); 
...después de haber copiado la imagen redimensionada sobre tu thumbnail, ¿no la estarías tapando con el color de fondo al hacer esto? Es sólo una duda, ya que no he puesto a correr tu código para probarlo.
Saludos!
__________________
pipus.... vieeeeeji plomius!!!
*quinqui site*

Última edición por quinqui; 11/07/2013 a las 07:22
  #6 (permalink)  
Antiguo 11/07/2013, 22:20
Avatar de syntex  
Fecha de Ingreso: noviembre-2002
Ubicación: Cataluña
Mensajes: 978
Antigüedad: 21 años, 5 meses
Puntos: 4
Respuesta: Problemas con thumbnails proporcionados

Ya esta!!!!!

Solucionado!!!!!

Cambie imagecopyresampled por imagecopyresized

Muchísimas gracias a todos por el reporte...................
__________________
------------------------------------------------
La paciencia es el rey de la ciencia
------------------------------------------------


Etiquetas: thumbnails, variables
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 22:18.