Foros del Web » Programando para Internet » PHP »

curiosidad creando thumbnails

Estas en el tema de curiosidad creando thumbnails en el foro de PHP en Foros del Web. Hola a todos, Estuve utilizando hasta la fecha, un código para crear automáticamente thumbnails (de una en una). El caso, es que hoy quise ir ...
  #1 (permalink)  
Antiguo 14/05/2008, 04:56
 
Fecha de Ingreso: septiembre-2007
Mensajes: 106
Antigüedad: 16 años, 7 meses
Puntos: 1
curiosidad creando thumbnails

Hola a todos,

Estuve utilizando hasta la fecha, un código para crear automáticamente thumbnails (de una en una). El caso, es que hoy quise ir un poco más allá e incorporarlo a mi base de datos.

Codigo de mipagina.php (en un servidor de un ISP de internet):

Código:
include("easythumbnail.class.php");

	        $ruta = 'http://LAIPDEMISERVERLOCAL/Imagenes/';
		$Carpeta = str_replace(".","_",$fila["idfoto"]);
		$barra = '/';
		$Imagen1 = $fila["Imagen1"];
		$ImagenDestino = $Carpeta."_mini.jpg";
		$total = $ruta.$Carpeta.$barra.$Imagen1;
		echo $total; // Asi veo toda la url que me crea
	$thumb= new EasyThumbnail("$total", "images/$ImagenDestino", 350);?>
	<center><img src="images/propiedades/<?echo $ImagenDestino ?>"></center><br>
Este código lo pongo dentro de un while, y así me debería ir generando según recorre con el select la DB. El caso es que no funciona.

El error debe estar en que este script no debe permitir a mi servidor local. El caso esta en que si pongo http://miipfija/micarpeta/mifoto.jpg (resultado de la variable total, la veo en el navegador).

Si cambio la variable total, por una carpeta en mi servidor contratado con un ISP funciona.

El problema está en que quiero mostrar 'noticias' que tengo en mi DB de mi hosting (ISP), pero mostrar las fotos de mi servidor local (11 GB), y antes deseo llamarlas con el script para que tan solo en el servidor del ISP se guarde la thumbnail.

Alguna idea de pq falla el script con la ip de mi server local?.

Pongo más abajo la clase thumbail.

Gracias a todos


Código del include de la clase thumbnail:

Código:
<?
/*
EasyThumbnail - versão 0.1 - Por Rogério Bragil  - Esta classe
cria um thumbnail de uma imagem através de um cálculo de aproximação. Você
pode criar miniaturas de imagens de diferentes tamanhos que o resultado será
uma coleção de thumbnails de dimensões parecidas. Ideal para albuns de fotos,
onde basta você fazer o upload da imagem e deixar a classe gerar o thumbnail.
OBS: trabalha com jpg e png somente. 

  e-mail: [email protected] - Qualquer sugestão, dúvida ou crítica serão bem aceitos!
*/
class EasyThumbnail
{
    private $debug= true;
    private $errflag= false;
    private $ext;
    private $origem;
    private $destino;
    private $errormsg;
    
    function __construct($imagem, $destino, $aprox)
    {
        // se o arquivo não existir, erro
        if (!file_exists($imagem))
        {
            $this->errormsg= "Arquivo não encontrado.";
            return false;
        }
        else
        {
            $this->origem= $imagem;
            $this->destino= $destino;
        }
        // obtém a extensão do arquivo
        if (!$this->ext= $this->getExtension($imagem))
        {
            $this->errormsg= "Tipo de arquivo inválido.";
            return false;
        }
        // gera a imagem do thumbnail com o caminho e nome do arquivo especificados
        $this->createThumbImg($aprox);
    }
    
    // retorna as dimensões (x,y) do thumbnail a ser gerado
    public function getThumbXY($x, $y, $aprox)
    {
         if ($x >= $y)
        {
            if ($x > $aprox)
            {
                $x1= (int)($x * ($aprox/$x));
                $y1= (int)($y * ($aprox/$x));
            }
            else
            {
                $x1= $x;
                $y1= $y;
            }
        }
        else
        {
            if ($y > $aprox)
            {
                $x1= (int)($x * ($aprox/$y));
                $y1= (int)($y * ($aprox/$y));
            }
            // Caso a imagem seja menor do que
            // deve ser aproximado, mantém tamanho original para o thumb.
            else
            {
                $x1= $x;
                $y1= $y;
            }
        }
        $vet= array("x" => $x1, "y" => $y1);
        return $vet;
    }
    
    // cria a imagem do thumbnail
    private function createThumbImg($aprox)
    {
        // imagem de origem
        $img_origem= $this->createImg();

        // obtém as dimensões da imagem original
        $origem_x= ImagesX($img_origem);
        $origem_y= ImagesY($img_origem);
        
        // obtém as dimensões do thumbnail
        $vetor= $this->getThumbXY($origem_x, $origem_y, $aprox);
        $x= $vetor['x'];
        $y= $vetor['y'];
        
        // cria a imagem do thumbnail
        $img_final = ImageCreateTrueColor($x, $y);
        ImageCopyResampled($img_final, $img_origem, 0, 0, 0, 0, $x+1, $y+1, $origem_x, $origem_y);
        // o arquivo é gravado
        if ($this->ext == "png")
            imagepng($img_final, $this->destino);
        elseif ($this->ext == "jpg")
            imagejpeg($img_final, $this->destino);
    }
    
    // cria uma imagem a partir do arquivo de origem
    private function createImg()
    {
        // imagem de origem
        if ($this->ext == "png")
            $img_origem= imagecreatefrompng($this->origem);
        elseif ($this->ext == "jpg" || $this->ext == "jpeg")
            $img_origem= imagecreatefromjpeg($this->origem);
        return $img_origem;
    }
    
    // obtém a extensão do arquivo
    private function getExtension($imagem)
    {
        // isso é para obter o mime-type da imagem.
        $mime= getimagesize($imagem);

        if ($mime[2] == 2)
        {
           $ext= "jpg";
           return $ext;
        }
        else
        if ($mime[2] == 3)
        {
           $ext= "png";
           return $ext;
        }
        else
           return false;
    }
    
    // mensagem de erro
    public function getErrorMsg()
    {
        return $this->errormsg;
    }
    
    public function isError()
    {
        return $this->errflag;
    }
}
?>
  #2 (permalink)  
Antiguo 14/05/2008, 05:06
 
Fecha de Ingreso: octubre-2004
Mensajes: 2.627
Antigüedad: 19 años, 6 meses
Puntos: 48
Re: curiosidad creando thumbnails

¿Tu ip es publica? Quiero decir que si desde otro lugar diferente a la red local de tu ordenador se accede a tu servidor web. Si te vas a la casa de un amigo y pones esa direccion, ¿se ve?

Tambien puede ser que el server de tu isp no permita abrir urls, prueba poniendo la url de una imagen de un pagina de internet. Con fopen() hay una directiva allow_url_fopen que habilita o deshbilita poder abrir urls, creo que tambien controla las funciones imagecreatefrom*().
  #3 (permalink)  
Antiguo 14/05/2008, 05:12
 
Fecha de Ingreso: septiembre-2007
Mensajes: 106
Antigüedad: 16 años, 7 meses
Puntos: 1
Re: curiosidad creando thumbnails

Gracias Dark,

Sisi, mi ip es fija. En cualquier ordenador accedo a mi servidor local.

Ahora haciendo más pruebas, he dado con 'parte de la solución'.

En la clase thumbnail, he comentado la primera parte donde comprueba si la foto existe:

// if (!file_exists($imagem))
//{
// $this->errormsg= "Arquivo não encontrado.";
// return false;
// }
//else
//{

Ahora ya me genera el THUMBNAIL, aunque es excesivamente lento al cargar. Una imagen de casi medio mega, me la ha convertido en 14 Kb. Así que un exito.

El problema es que se ha tirado casi medio minuto en cargar.

Alguna recomendación?
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 11:16.