Hola a todos,
Este fin de semana me he puesto con el tema de las Thumbnails, ya que lo tenia pendiente.
Gestiono mi propio blog de noticias y las mismas se me guardan en mi DB con: 'id', 'titulo', 'descripcion', 'fecha' e 'imagen'. La imagen se me guarda en tamaño original, y la recupero de forma más reducida aplicando un widht y height (algo guarro para los tiempos que corren).
Recupero las mismas así:
Código:
<? $res=mysql_query("select * from noticias order by fecha desc");
while($fila=mysql_fetch_array($res))
{
<?echo $fila["titulo"];?><br>
<?echo $fila["descripcion"];?><br>
<?echo $fila["fecha"];?><br>
<img widht="200" height="200" src="http://www.forosdelweb.com/images/<?echo $fila["imagen"];?>">
}
?>
El caso está en que no consigo aplicar los ejemplos que veo en mi While. Os pongo uno de los ejemplos más sencillos que he visto:
Código:
<?
include("easythumbnail.class.php");
$thumb= new EasyThumbnail("http://www.forosdelweb.com/images/Accion206.jpg", "upload/mini.jpg", 200);
if ($thumb)
echo "Miniatura gerada correctamente!<br>";
else
echo $thumb->getErrorMsg();
?>
<img src="http://www.forosdelweb.com/images/Accion206.jpg"> <img src="upload/mini.jpg">
Más abajo muestro el código del easythumbnail.class.php; El caso está en que con esté código tan sencillo me genera el thumbnail y con la úlima línea puesta veo las dos imágenes.
El caso está en que no se compaginar la $thumb con el: <?echo $fila["imagen"];?> de mi código.
Alguién con conocimientos avanzados que me pueda echar un cable?
gracias!!
Código del easythumbnail.class.php:
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;
}
}
?>