Jump to content


Photo

Gerador De Thumbnails


  • Faça o login para participar
9 replies to this topic

#1 rAFiLXs

rAFiLXs

    Turista

  • Usuários
  • 34 posts
  • Sexo:Não informado

Posted 26/05/2007, 11:42

Depois de testar dezenas de geradores de thumbnails q procurei pela net, nao enncontrei nenhum que mesmo definindo a qualidade do JPG como 100, chegasse a uma qualidade realmente BOA.

Até que achei esse codigo no site da biblioteca GD, testem ai, o resultado é equivalente ao photoshop!

<?php

	$i = new imagethumbnail();
	$i->open("teste.jpg"); // coloque aqui o nome do arquivo original
	$i->setX(100);
	
	header("Content-type: image/jpeg;");
	$i->imagejpeg();

	class imagethumbnail {
	
		var $filename;
		var $x;
		var $y;
		var $image;
		var $thumbnail;

		function imagethumbnail() {

		}
		
		function open($filename) {

			$this->filename = $filename;
			$imageinfo = array();
			$imageinfo = getimagesize($this->filename,$imageinfo);
			
			$this->old_x = $imageinfo[0];
			$this->old_y = $imageinfo[1];
						
			switch ($imageinfo[2]) {
				case "1": $this->image = imagecreatefromgif($this->filename); break;
				case "2": $this->image = imagecreatefromjpeg($this->filename); break;
				case "3": $this->image = imagecreatefrompng($this->filename); break;
			}
			
		}

		function setX($x="") {
			if (isset($x)) { $this->x = $x; }
			return $this->x;
		}

		function setY($y="") {
			if (isset($y)) { $this->y = $y; }
			return $this->y;
		}

		function generate() {

			if ($this->x > 0 and $this->y > 0) {
				$new_x = $this->x;
				$new_y = $this->y;
			} elseif ($this->x > 0 and $this->x != "") {
				$new_x = $this->x;
				$new_y = ($this->x/$this->old_x)*$this->old_y;
			} else {
				$new_x = ($this->y/$this->old_y)*$this->old_x;
				$new_y = $this->y;
			}

			$this->thumbnail = imagecreatetruecolor($new_x,$new_y);
			$white = imagecolorallocate($this->thumbnail,255,255,255);
			imagefill($this->thumbnail,0,0,$white);

			imagecopyresampled ( $this->thumbnail, $this->image, 0, 0, 0, 0, $new_x, $new_y, $this->old_x, $this->old_y);

		}

		function imagegif($filename="") {
			if (!isset($this->thumbnail)) { $this->generate(); }
			imagetruecolortopalette($this->thumbnail,0,256);
			if ($filename=="") {
				imagegif($this->thumbnail);
			} else {
				imagegif($this->thumbnail,$filename);
			}
		}

		function imagejpeg($filename="",$quality=100) {
			if (!isset($this->thumbnail)) { $this->generate(); }
			imagejpeg($this->thumbnail,$filename,$quality);
		}

		function imagepng($filename="") {
			if (!isset($this->thumbnail)) { $this->generate(); }
			if ($filename=="") {
				imagepng($this->thumbnail);
			} else {
				imagepng($this->thumbnail,$filename);
			}
		}

	}
	
?>

rAFiLXs®
[www.pontovirtual.com]

#2 Andrey Viana

Andrey Viana

    Novato no fórum

  • Usuários
  • 2 posts
  • Sexo:Não informado

Posted 30/05/2007, 17:15

realmente muito, bom! tambem procurei muito por um script assim.. valeu !! ;-)

abraço!

#3 chipis

chipis

    24 Horas

  • Usuários
  • 439 posts
  • Sexo:Masculino
  • Localidade:Blumenau - SC

Posted 22/06/2007, 13:29

Só uma duvida se eu quiser listar um diretorio com umas 20 fotos como faço para ele gerar 20 thumbs?
flws...

#4 Allan Carvalho

Allan Carvalho

    Òó :: ^^

  • Usuários
  • 471 posts
  • Sexo:Masculino
  • Localidade:Campinas - SP
  • Interesses:Um PC novo e rápido. ^^

Posted 18/07/2007, 05:54

Boa chipis!

Como?
Nome: Allan V. Ferreira de Carvalho.
Localidade: Campinas - SP
Linguagem de desenvolvimento: XHTML | CSS (Tableless) | JavaScript | AJAX | PHP
Contatos: brkamikasecps@gmail.com | brkamikasecps@hotmail.com

Posted Image


#5 Paulo André

Paulo André

    Why so serious?

  • Ex-Admins
  • 5114 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte - MG
  • Interesses:O.Q.F.J.?

Posted 18/07/2007, 07:59

Dê uma olhada no primeiro exemplo da página do Manual para a função glob(), que é uma maneira de substituir a função opendir().

Flws...
(ok2)Até mais
Paulo André G Rodrigues,
ex-administrador Fórum WMO.


www.CanalDev.com.br

#6 wawasurf

wawasurf

    Wawasurf

  • Usuários
  • 257 posts
  • Sexo:Masculino
  • Localidade:Criciuma

Posted 30/08/2007, 13:45

Muito bom esse script. funciona perfeito. Só q naum sei ondi determina o tamanho do thumbnail, q fica 100x74 pixels, será q tem como trocar? Também naum consegui listar com a função glob() as fotos de um diretório, alguém podia me dar uma luz?

Valeu!!

Parabéns pelo fórum!!
Wagner Machado Martins
Webmaster
Agência Gigante
Criciúma - SC

#7 bryntec

bryntec

    Turista

  • Usuários
  • 46 posts
  • Sexo:Masculino
  • Localidade:Brasil

Posted 12/09/2007, 15:17

Nossa broder, perfeito, funcionou demais cara.
Obrigado pela contribuição.

Edição feita por: bryntec, 12/09/2007, 15:17.

bryntec.com | Design e Programação Web

#8 chipis

chipis

    24 Horas

  • Usuários
  • 439 posts
  • Sexo:Masculino
  • Localidade:Blumenau - SC

Posted 28/01/2008, 12:10

Dê uma olhada no primeiro exemplo da página do Manual para a função glob(), que é uma maneira de substituir a função opendir().

Flws...
(ok2)


Gente eu tentei com a funcao glob() que o Paulo falou mas não consegui gerar varios thumbs.
Sera que alguem tem uma ideia de como fazer isso?

flws...

#9 WellingtonSousa

WellingtonSousa

    Novato no fórum

  • Usuários
  • 3 posts
  • Sexo:Não informado

Posted 27/08/2008, 10:03

Como eu poderia usá-la com imagens salvas num banco mysql?

#10 lwirkk

lwirkk

    Veterano

  • Usuários
  • 1314 posts
  • Sexo:Não informado

Posted 28/08/2008, 00:30

Como eu poderia usá-la com imagens salvas num banco mysql?

Faça uma query para pegar as imagens, e depois faça o loop como normalmente se faz para pegar os dados, e nesse loop se pega somente o nome da imagem e a cada iteração será chamada a classe....

ex:
//AQUI A CLASSE

$i = new imagethumbnail();

$sql=mysql_query("SELECT * FROM imagens");
while($arr=mysql_fetch_array($sql)){
	$i->open($arr['imagem']);
	$i->setX(100);
	$i->imagejpeg($arr['imagem']);
}

Edição feita por: lwirkk, 28/08/2008, 00:33.

Posted Image
"Se quiser ser feliz por um dia, vingue-se; se quiser ser feliz por uma vida inteira, perdoe."

Muito Obrigado à todos do fórum, e à toda equipe do fórum! =)




0 user(s) are reading this topic

0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq