Jump to content


Photo

Gerar Thumbs (miniaturas)


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

#1 JoinTek

JoinTek

    24 Horas

  • Usuários
  • 454 posts
  • Sexo:Masculino
  • Localidade:Santarém, PA

Posted 05/08/2005, 15:44

Bem, eu vi um cara que postou no forum com um problema em gerar thumbs, ai eu resolvi fazer um script que mostra todas as imagens (Apenas JPG) de uma pasta.

Pra isso é necessário apenas dois arquivos:

» gerar_thumb.php //Esse arquivo aqui é o que vai criar thumbs.
» thumbs.php //Esse arquivo aqui é o que vai mostrar as thumbs e lista-las (você pode até escolher quantas mostrar por linha).

Bem, vamos ao que interessa.

gerar_thumb.php
<?php
$pasta = "imagens"; //Bote aqui a pasta onde estão as imagens (se o arquivo estiver na mesma pasta das imagens deixe em branco)

$filename = "$pasta/$filename"; //não mude aqui

$thumb_x = 100; //Largura da thumb
$thumb_y = 150; //Altura da thumb

$quality = 80; //Qualidade (melhor não mudar)

//Deixe essa parte como está
$thumbnail = imagecreatetruecolor($thumb_x, $thumb_y);
$originalimage = imagecreatefromjpeg($filename);
imagecopyresized($thumbnail, $originalimage, 0, 0, 0, 0, $thumb_x, $thumb_y,
ImageSX($originalimage),ImageSY($originalimage));
imagepng($thumbnail,'',$quality);
?>

Bem, agora que fizemos a página que vai gerar as thumbs nós iremos fazer a página que vai mostrar todos as thumbs.

thumbs.php
<script>
function Selected(what) { what.style.border = "3px Solid red"; }
function Unsel(what) { what.style.border = "3px Solid #000000"; }
</script>
<table width=60% style="border: 1px solid #000000;" cellspacing=2 cellpadding=2>
<?
$totalporlinha="4"; // Total de fotos por linha
$pasta = "imagens"; // Pasta de onde estão as fotos (se o arquivo estiver na mesma pasta das fotos bote apenas "./")

$open = opendir("$pasta/"); //Abre a pasta
while ($foto = readdir($open)) { //Lê a pasta
if (eregi(".jpg",$foto)) { //Verifica se o arquivo é mesmo JPG
if ($cont == "") { $cont="0"; } 
if ($cont=="0") { echo "<tr>"; }
$cont++;
echo "
<td>
<a href=\"sab/$foto\">
<img style=\"border: 3px solid #000000\" onmouseover=Selected(this); onmouseout=Unsel(this); src=\"gera_thumb.php?filename=$foto\">
</a></td>"; //Mostra as thumbs
if ($cont=="$totalporlinha") { echo "</tr>"; $cont="0"; }
}
}
?>
</table>


Bem, é isso ai pessoal.
Lembrem-se, é necessário ter a biblioteca GD instalada no servidor, caso contrario o script não irá funcionar (Eu uso WAMP5 [Windows + Apache 1.33 + Mysql 4.* + PHP 5])

O script foi testado e funcionou corretamente, caso ocorra algum erro poste aqui.

(y) []'s Inté

#2 Leonardo Freire

Leonardo Freire

    Novato no fórum

  • Usuários
  • 14 posts
  • Sexo:Não informado
  • Localidade:RIo de Janeiro

Posted 05/08/2005, 15:53

Ola amigo, no meu caso eu tenho um servidor que fica na web " www.4sites.com.br "

como eu poderia instalar a biblioteca GD ?? pra poder fazer funcionar ?

[]'s
leo

#3 JoinTek

JoinTek

    24 Horas

  • Usuários
  • 454 posts
  • Sexo:Masculino
  • Localidade:Santarém, PA

Posted 05/08/2005, 17:45

Oi,

Que eu saiba, só o administrador pode instalar isso, e parece que roda só com php5 (eu acho).

Não sei direito isso... quando eu usava php 3 aqui ele não rodava com gd, ai eu instalei o php5 e rodo tudo legal cara.

Mas no sseu caso eu não sei como fazer já que o servidor não é seu, certo?


[]'s

#4 Leonardo Freire

Leonardo Freire

    Novato no fórum

  • Usuários
  • 14 posts
  • Sexo:Não informado
  • Localidade:RIo de Janeiro

Posted 05/08/2005, 18:27

JoinTek, obrigado pela resposta, eu entrei em contato com o suprte do meu servidor e eles arrumaram o GD pra mim,

[]'s
leo

#5 henriquefr

henriquefr

    12 Horas

  • Usuários
  • 209 posts
  • Sexo:Não informado
  • Localidade:Cuiabá-MT
  • Interesses:PHP, Ajax e JavaScript.

Posted 06/08/2005, 01:35

Fatal error: Call to undefined function: imagecreatetruecolor() in D:\Henrique\site\img\gerar_thumb.php on line 11

linha 11: $thumbnail = imagecreatetruecolor($thumb_x, $thumb_y);

ele ta dando esse erro aki ...
eu uso um sevidor Windows com IIS + MySql5 + PHP4.3.4....

Edição feita por: henriquefr, 07/08/2005, 22:35.

<?php

?>

#6 Felipe Pena

Felipe Pena

    O temor do Senhor é o princípio da sabedoria

  • Ex-Admins
  • 6441 posts
  • Sexo:Masculino

Posted 13/08/2005, 05:58

A biblioteca GD está habilitada?
Felipe Pena
[...] ó terra, terra, terra; ouve a palavra do Senhor. — Jeremias 22:29

#7 henriquefr

henriquefr

    12 Horas

  • Usuários
  • 209 posts
  • Sexo:Não informado
  • Localidade:Cuiabá-MT
  • Interesses:PHP, Ajax e JavaScript.

Posted 14/08/2005, 20:50

nao sei como q abilita ... =/
o server eh a minha maquina
<?php

?>

#8 Felipe Pena

Felipe Pena

    O temor do Senhor é o princípio da sabedoria

  • Ex-Admins
  • 6441 posts
  • Sexo:Masculino

Posted 14/08/2005, 22:34

Verifica se existe o arquivo php_g2.dll no diretório extension/

Se tiver, abra o PHP.ini e tire o ; (descomente a linha):

extension=php_gd2.dll


Se não encontrar o php_g2.dll procure informações de onde encontrar em:
http://www.php.net/gd



[]'s
Felipe Pena
[...] ó terra, terra, terra; ouve a palavra do Senhor. — Jeremias 22:29

#9 JoinTek

JoinTek

    24 Horas

  • Usuários
  • 454 posts
  • Sexo:Masculino
  • Localidade:Santarém, PA

Posted 17/08/2005, 14:18

É isso aí que o eclesiastes falou ;D

Edição feita por: JoinTek, 09/05/2007, 22:22.


#10 Nando

Nando

    Eta eta eta, brasileiro quer.. futibol, mulher e rock'n roll

  • Usuários
  • 916 posts
  • Sexo:Masculino
  • Localidade:Sapucaia do Sul - RS
  • Interesses:Não sou interesseiro.

Posted 16/02/2006, 03:43

Aí quais alterações devo fazer no código pra puxar de um bd a foto q eu quero fazer o thumb?
Qualquer dia será só 1 linha de assinatura! x) Aí vou deixar essa aki mesmo já pra garantir.
Fireworks: llllllllllllllllllllllllllllll (Jah mexo a tempo mas ando meio parado)
Dreamweaver: llllllllllllllllllllllllllllll (Braço direito enquanto programo)
Js: llllllllllllllllllllllllllllll (Recem iniciando)
PHP: llllllllllllllllllllllllllllll (Dinamic Punch!!)

#11 Bittencourt

Bittencourt

    12 Horas

  • Usuários
  • 233 posts
  • Sexo:Não informado
  • Localidade:Rio de Janeiro - RJ
  • Interesses:Linguagem PHP eternamente!!!!

Posted 04/01/2007, 12:42

Fala Galera!

Segui os passos do tuto mas está dando o seguinte erro?

Warning: imagecreatefromjpeg(): 'imagem/' is not a valid JPEG file in /home/mvida/www/congresso/gerar_thumb.php on line 13

Warning: imagesx(): supplied argument is not a valid Image resource in /home/mvida/www/congresso/gerar_thumb.php on line 15

Warning: imagesy(): supplied argument is not a valid Image resource in /home/mvida/www/congresso/gerar_thumb.php on line 15

Warning: imagecopyresized(): supplied argument is not a valid Image resource in /home/mvida/www/congresso/gerar_thumb.php on line 15

Verifiquei meu servidor e a GD 2.0 está habilitada...

Vejam se podem me ajudar! Valeu!

#12 JoinTek

JoinTek

    24 Horas

  • Usuários
  • 454 posts
  • Sexo:Masculino
  • Localidade:Santarém, PA

Posted 09/05/2007, 22:25

Nossa, eu ia tentar responder o ultimo erro, mas faz tanto tempo que fiz isso...
E sabe quando a gente olha pra uma coisa e pensa: "nossa como que eu fiz isso?"?
E depois vem outro pensamento: "nossa, como eu num sabia nada"

hehe =]

Té mais;

#13 Gustavo Krause

Gustavo Krause

    Novato no fórum

  • Usuários
  • 1 posts
  • Sexo:Masculino
  • Localidade:Paulo Setubal 1565

Posted 12/09/2007, 17:45

Estou fazendo um album aqui e me veio a necessidade de gerar Thumb das imagens.

Cai nesta pagina, só que o script la de cima esta com algumas falhazinhas.

ai dei uma alterada.

aqui no meu PC funcionou. Pode ser melhorado esse código!! mas pelo menos esta funcionando.

!!! Não esqueçam! que a biblioteca GD deve estar ativada!!


arquivo: thumbs.php

&lt;script>	function Selected(what) {		what.style.border = "3px Solid red";	}	function Unsel(what) {		what.style.border = "3px Solid #000000";	}</script><table width=60% style="border: 1px solid #000000;" cellspacing=2 cellpadding=2><?php$totalporlinha="4"; // Total de fotos por linha$pasta = "fotos"; // Pasta de onde estão as fotos (se o arquivo estiver na mesma pasta das fotos bote apenas "./")$open = opendir("$pasta/"); //Abre a pastawhile ($foto = readdir($open)) { //Lê a pasta	if (eregi(".jpg",$foto)) { //Verifica se o arquivo é mesmo JPG	if ($cont == "") {		$cont="0";	}	if ($cont=="0") {		echo "<tr>";	}	$cont++;	echo "	<td>	<a href=\"$pasta/$foto\">	<img style=\"border: 3px solid #000000\" onmouseover=Selected(this); onmouseout=Unsel(this); src=\"gerar_thumb.php?filename=$foto\">	</a></td>"; //Mostra as thumbs	if ($cont=="$totalporlinha") {		echo "</tr>"; $cont="0"; }	}}?></table>

arquivo: gerar_thumb.php

<?php$pasta = "fotos"; //Bote aqui a pasta onde estão as imagens (se o arquivo estiver na mesma pasta das imagens deixe em branco)$foto = $_GET["filename"];$filename = "$pasta/$foto"; //não mude aqui//$filename = "$pasta/$filename"; //não mude aqui$imagem_orig     =   ImageCreateFromJPEG($filename);//LARGURA$pontoX          =   ImagesX($imagem_orig);//ALTURA$pontoY          =   ImagesY($imagem_orig);$thumb_y = 150; //Altura da thumb//Essa formula: ($thumb_y * $pontoX) / $pontoY // é para diminuir na proporção $thumb_x = ($thumb_y * $pontoX) / $pontoY; //Largura da thumb, se quiser que ela seja uma largura fica é só substitur por isso: $thumb_x = 100;$quality = 80; //Qualidade (melhor não mudar)//Deixe essa parte como está$thumbnail = imagecreatetruecolor($thumb_x,$thumb_y);$originalimage = imagecreatefromjpeg($filename);imagecopyresized($thumbnail,$originalimage,0,0,0,0,$thumb_x,$thumb_y,ImageSX($originalimage),ImageSY($originalimage));imagejpeg($thumbnail,'',$quality);?>


#14 mgaletti

mgaletti

    Novato no fórum

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

Posted 06/08/2008, 03:06

Ficou show de bola agora, fechei a madrugada completando o sistema que estou fazendo com esse codigo.
Tá totalmente funcional, faltou declarar $cont = 0 no inicio, fora isso tá redondo.

Da para tirar a classe também que deixa a foto vermelha qdo passa o mouse em cima,
utilizei a função adicionando a mais na parte final aonde gera o thumb, um input type checkbox para o usuario poder marcar qual foto ele quer deletar.

Valeu brother's.

Edição feita por: mgaletti, 06/08/2008, 03:06.


#15 Dudu

Dudu

    Viva la vida

  • Usuários
  • 1437 posts
  • Sexo:Masculino
  • Localidade:Uberlândia - MG
  • Interesses:PHP

Posted 19/09/2008, 15:50

Muito melhor usar foreach() + glob() ;)
Até mais ^_^

Fórum WMO - Equipe de Desenvolvimento / Banco de Dados - Moderador


Twitter: HostCheap





0 user(s) are reading this topic

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

IPB Skin By Virteq