Ver Mensaje Individual
  #1 (permalink)  
Antiguo 14/05/2008, 04:56
xamamo
 
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;
    }
}
?>