Ver Mensaje Individual
  #1 (permalink)  
Antiguo 29/06/2013, 17:33
Avatar de angelblxt
angelblxt
 
Fecha de Ingreso: febrero-2013
Ubicación: Zaragoza
Mensajes: 10
Antigüedad: 13 años, 8 meses
Puntos: 0
Pregunta Problema con el tratamiento de imágenes GD.

Buenos días a todos, recurro aquí porque tengo una duda que me está dando verdaderos quebraderos de cabeza, voy a intentar explicarla lo máximo posible.

---

Resulta que tengo un Uploader de imágenes hecho en PHP, y sube las imágenes correctamente al directorio /ressources/photos/ pero, posteriormente quiero redimensionar las imágenes, por lo que tengo una clase para ello, la publico aquí:

Código PHP:
<?php
    
class Image
    
{

        private 
$sys;

        public function 
Image($system)
        {
            
$this->sys = $system;
        }

        public function 
ShowImage($path, $type, $size, $class = '', $style = '', $id = '')
        {
            
$string = $path.'---'.$type.'---'.$size;

            return 
'<img src="ressources/includes/resize.php?id='.$string.'" class="'. $class .'" style="'. $style .'" id="'. $id .'" />';
        }

        public function 
Resize($path, $type, $width)
        {
            switch(
$type)
            {
                case 
'gif' : $imagenOriginal = imagecreatefromgif($path); break;
                case 
'png' : $imagenOriginal = imagecreatefrompng($path); break;
                case 
'jpeg': $imagenOriginal = imagecreatefromjpeg($path); break;
                case 
'jpg' : $imagenOriginal = imagecreatefromjpeg($path); break;
            }

            
$anchoOriginal = imagesx($imagenOriginal);
            
$altoOriginal  = imagesy($imagenOriginal);

            
$altoFinal = ($width / $anchoOriginal) * $altoOriginal;

            
$imagenRedimensionada = imagecreatetruecolor($width, $altoFinal);

            
imagecopyresampled($imagenRedimensionada, $imagenOriginal, 0, 0, 0, 0, $width, $altoFinal, $anchoOriginal, $altoOriginal);
            
header('Content-type: '.$type);

            switch(
$type)
            {
                case 
'gif' : imagegif($imagenRedimensionada); break;
                case 
'png' : imagepng($imagenRedimensionada); break;
                case 
'jpeg': imagejpeg($imagenRedimensionada); break;
                case 
'jpg' : imagejpeg($imagenRedimensionada); break;
            }

            
imagedestroy($imagenOriginal);
            
imagedestroy($imagenRedimensionada);
        }
Aparece otro archivo entre las <img> su contenido es el siguiente:

Código PHP:
<?php
    
require '../../init.php';

    
$explode = explode('---',$string);

    
$path = $explode[0];
    
$type = $explode[1];
    
$size = $explode[2];

    echo 
$image->Resize('../../'.$path, $type, $size);
?>
Y la imagen la muestro así:

Código PHP:
<?php
    $image 
= new Image();

    echo 
$image->ShowImage('ressources/photos/evento.jpg', 'jpg', 100);
?>
El problema es que no la carga... no es problema del PHP porque si ressources/photos/evento.jpg lo cambio por ressources/img/genre/male.png esta si que sale.

En cambio, si muevo la imagen ressources/img/genre/male.png a ressources/photos/ y cambio el código, esta no se muestra... por lo que tendría que ser un problema de permisos y grupos de linux... publico los permisos de ressources/photos/:

Código:
-rw-r--r-- 1 www-data www-data 76282 jun 30 01:26 e6f8c7_evento.jpg
-rw-r--r-- 1 angelq   angelq    6628 jun 28 18:03 male.png
y no me muestra la imagen...

He probado a darle permisos 0777:

Código:
-rwxrwxrwx 1 www-data www-data 76282 jun 30 01:26 e6f8c7_evento.jpg
-rwxrwxrwx 1 angelq   angelq    6628 jun 28 18:03 male.png
y no me muestra la imagen...

Entonces me da por mirar en la carpeta ressources/img/genre/ a ver que permisos y a que grupo pertenece el archivo male.png y me encuentro con que tiene exáctamente los mismos que en el primer caso:

Código:
-rw-r--r-- 1 angelq   angelq    6628 jun 28 18:03 male.png
Así que no entiendo cual puede ser el maldito error...

Espero que me puedan ayudar, lo necesito... :S

Un cordial saludo a todos.