|
| Publicidade |
|
|
|
Comentários de Usuários
Me ajuda!!!! :(
Cara, eu só fiz dá um ctrl+c e ctrl+v para o phpeditor e joguei o código pro server... mais quem desse que apareceu o tumb...
A imagem , quando eu clico no link até aparece, mais o tumb não apareceu. Será que é pela versão do GD que eu tenho instalado (1.6.2 or higher)? Me dê alguma dica de qual pode ser o problema!!! Valeu... Fernando Cruz
Tambem nao funcionou
Comigo tambem nao aparece as miniaturas... eu mudei estas linhas
// Abre o diretório atual para leitura de imagens... if ($handle = opendir('images')) {
Alguém ai....dê uma luz...
Alguém ai dê uma luz por favor...faz muito tempo que procuro algo assim...e quando acho não está funcionando... :-(
Como uma luva!!
Mauricio,
Este artigo caiu como uma luva. Logo hoje precisei fazer uma galeria de imagens. Cada imagem teria 150 KB e com os thumbs cada uma fica com 5 KB. Isso agilizou muito na hora de carregar a página. Muito bom o artigo! Paulo Kun
Perfeito Cara
Olá Mauricio!
O seu artigo foi ótimo, muit bem explicado. Quanto ao código: foi só copiar e colar que já estava funcionando. Essa função vai ser muito útil pra mim, pois estou fazendo um site onde tenho que colocar uma grande quantidade de fotos. E cá pra nós! É um saco gerar tumbs pra todas as fotos. Parabens!
copiar e colar...
Fernando, uma coisa muito estranha que já em aconteceu foi tentar copiar e colar código do Opera para o notepad e não funcionar nada. Fazer a mesma coisa do msie e funcionar direto.
Outra coisa que pode estar acontecendo é a versão do GD. Distribuições recentes do linux já vem com "GD Version bundled (2.0.17 compatible)", que facilita a tua vida em 2.000%. Se colar do exploder não funcionar, experimenta em outro server, ou diz pro teu root atualizar a bagaça; :)
ah... obrigado.
aos que conseguiram e foi útil, o meu obrigado. :)
repeticao de assunto
Já havia um artigo feito sobre esse assunto, http://phpbrasil.com/articles/article.php/id/204
A parte de pegar todas as fotos ficou legal parabens!
AJUDA
No phpinfo() diz que:
GD Version bundled (2.0.15 compatible) será que é por isso que as imagens não são criadas? so tá aparecendo aquele X, o codigo HTML é gerado mas as miniaturas não por favor, me responda, valeu
Dúvida
Gostei muito do código, bem simples e fácil.
Porém ocorreu um erro que foi comum aqui, os thumbnails não apareceram :( To usando o EasyPHP 1.7 e pelo que vi ele vem com a GD e já habilitei ela no php.ini, mas na hora que é pra ver os thumb só aparecem os quadrados com X.
Demora
Utilizo um código de raciocínio semelhante, porém o servidor demora para devolver a imagem. E não é uma imagem grande, ela fica em torno de 30Kb. Teria alguma coisa para solucionar isto.
Utilizo servidor da HostNET.
Alguém me ajuda....
Essa foi minha mensagem de erro:
Warning: Cannot add header information - headers already sent by (output started at c:\phpdev\www\thumb\thumb.php:3) in c:\phpdev\www\thumb\thumb.php on line 65 Já tentei de tudo...nada consegui... A versão do meu GD é 2.0 or higher!
Re: Alguém me ajuda....
Francisco, isso acontece porque, provavelmente, você tem alguma saída de dados antes da função header().
Qualquer saída de dados [seja um código HTML, um echo, um comando pra impressora e etc] fecha a header e ela não podem ser alterada sem que a página seja recarregada... Verifica aí no seu código se não está acontecendo isso, se for esse o caso, é só remanejar as saídas de dados pra depois do envio da header que deve funcionar normalmente... =]
Me ajudem por favor
Mauricio muito bom esse artigo.
Cara eu copiei todo o código, gerei os arquivos, os link até aparecem, mais o tumb não, estou utilizando o GD bundled (2.0.23 compatible), já tentei rodar com o easyPHP também não deu, por favor me ajude... valew
Só vc pode me ajudar...
Estou começando a estudar PHP...daí olhei esse teu artigo e achei super massa...só que nunca consegui executá-lo!
Essa é minha mensagem de erro no thumb.php: Warning: Cannot add header information - headers already sent by (output started at c:\phpdev\www\thumb\thumb.php:3) in c:\phpdev\www\thumb\thumb.php on line 65 E a linha 65 é: header('Content-type: image/jpeg'); Já o meu arquivo para listar as imagens..que eu chamei de imagens.php mostra os espaços certos para os thumbs mas não mostra as imagens... Por favor me ajude!
thumbs com segurança
Olá
Fiz um sistema semelhante para geração de thumbnails, onde o proprio arquivo original gera o thumb, modificando apenas seu tamanho. Mas o que está pegando agora é a segurança deste sistema. Ele esta hospedado na minha conta particular do servidor de e-mail da minha empresa. Meu objetivo é distribuir este sistema para outros usuarios, numa conta particular (apenas para este fim) ou na conta de cada usuario. Bem, o problema é: As imagens são apenas inseridas ou mostradas quando o diretório de imagens está configurado como 777 (o proprietário, o grupo e todos lêem, escrevem e executam), o que torna este sistema muito vulnerável. Eu gostaria de saber se há algum meio óu existe algum sistema semelhante, mas seguro. Obrigado Cesar
Código Perfeito (Like a glove)
Mauricio,
o seu artigo me caiu como uma luva, funcionou muito bem e pode ter certeza que nos créditos do projeto de comércio eletrônico que minha equipe está trabalhando aparecerá seu nome como um grande colaborador (merecidos créditos digno de passagem). Só estou enviando esta mensagem para agradecer mesmo.. funcionou perfeitamente.. li alguns relatos de problema acima e percebo que algumas pessoas podem não ter editado o arquivo php.ini e habilitado a extensão gd.. outras que tem problemas com a função header, certamente tem código antes da tag de abertura de script "<?".. Fica meu abraço.. e meus agradecimentos!
Aos que estão com problemas
O Código acima é perfeito , porém existe um "problema" na relação entre o código thumb.php e a página xhtml simples
A página xhtml simples foi concebida para abrir as imagens que estão no mesmo diretório através da instrução: if ($handle = opendir('.')) { assim como tb. faz a chamada do thumb.php pressupondo a mesma coisa: <img src="thumb.php?'.$file.'" alt="'.$alt.'" /> Isso conflita com o Script thumb.php que no seu inicio preve 'PATH_IMG' como o caminho ao diretório das imágens. e possui em seu código , a seguinte linha: $image_path = PATH_IMG . '/' . $image_file; Se ambos estão (thumb.php e a página xhtml simples) no mesmo diretório das imágens , a linha acima informará um caminho incorreto a localização das imagens. Dica: Coloque os dois (thumb.php e a página xhtml simples que faz a chamada) no mesmo diretório das imagens que pretende exibir , e faça a seguinte alteração no código: Apague esta linha $image_path = PATH_IMG . '/' . $image_file; insira esta no mesmo local $image_path = $image_file; pois se vc optar por fazer : define('PATH_IMG', ''); ainda havera a saida de uma '/' em: $image_path = PATH_IMG . '/' . $image_file; o que levara o script a mostrar o famoso X Parabéns ao Mauricio pelo excelente código
Problemas com o header
Ola pessoal!
Ja tentei de tudo para retirar o erro de Warning: Cannot add header information - headers already sent by.... Copiei e colei os codigos mas continuo somente recebendo o erro acima! O que esta errado?? Abraco!
Resolvi
Pessoal, ja resolvi o meu problema!
O problema e no thumb.php Nao pode haver nada antes da abertura do script. Nem mesmo espaco ou nova linha!! Se vc copiar e colar o script dessa pagina: <!-- START arquivo thumb.php --> <?PHP existe uma linha antes da abertura do script. Isso vai causar o erro! Tirei esse trecho e funcionou bem! DICA: Se vc quiser ter certeza do erro que esta ocorrendo, basta colocar no navegador: http://endereco_do_servidor/thumb.php?nome_do_arquivo.jpg Assim vc acessa direto a pagina e recebe o erro. Fica mais facil descobrir o que esta acontecendo! Um abraco e parabens pelo artigo!
Nomes com espacos
A funcao de imagecreate() nao funciona com nomes com espaços? Tem como fazer? Tenho 5000 imagen e teria que renomear todas. J´´a fiz o replace do espaço pelo codigo asc mas nao resolveu.
ex. do nome: imagem (0).jpg Alguma dica, alem de renomear?
Re: Nomes com espacos
Podes tentar substituir espaços por %20, ou podes usar um programinha como o ACDSee para renomear todas as imagens tomáticamente...
na primeira sugestão: imagem%20(0).jpg não testado. Outra: desculpem o comentário antse do início do arquivo. vacilo pra deixar o código bonito pra cá. :)
Atenção
Funcionou perfeitamente, parabéns pelo excelente script. Muita atenção no php.ini, é necessário descomentar a dll referente ao GD. Meu script ficou exatamente assim...
<!doctype html public "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <title>.: Lista Imagens :.</title> <meta name="author" content="mauricio wolff :aka: mauwolff" /> <style type="text/css" media="all"> <!-- body, p { font-family: arial, sans-serif; font-size: 12px; } image { border: 0; display: block; clear: both; margin: 15px; text-align: center;} --> </style> </head> <body> <?php // Abre o diretório atual para leitura de imagens... if ($handle = opendir('images')) { while (false !== ($file = readdir($handle))) { // Só carrega as imagens que tiverem extensões esperadas if (strtolower(substr($file, -4, 4)) == '.jpg' || strtolower(substr($file, -4, 4)) == '.gif' || strtolower(substr($file, -4, 4)) == '.png' || strtolower(substr($file, -5, 5)) == '.jpeg') { $alt = 'clique para ver a imagem no tamanho original...'; echo '<a href="'.$file.'" target="_blank"><img src="thumb.php?'.$file.'" alt="'.$alt.'" /></a>'."\n"; } } closedir($handle); } ?> </body> </html> -------------------------------------------- <?PHP /** Arquivo: thumb.php * Autor: Mauricio Wolff .:. organiKa * baseado no trabalho de Michael Bailey ***/ // Constantes: variaveis que não mudam em todo o programa // path do win2k. no unix, mude de 'd:/path' para '/home/usuario/www' define('PATH_IMG', 'images'); define('MAX_WIDTH', 160); define('MAX_HEIGHT', 120); # Pega onde está a imagem $image_file = str_replace('..', '', $_SERVER['QUERY_STRING']); #$image_path = $image_file; $image_path = PATH_IMG . '/' . $image_file; # Carrega a imagem $img = null; $extensao = strtolower(end(explode('.',$image_path))); if ($extensao == 'jpg' || $extensao == 'jpeg') { $img = @imagecreatefromjpeg($image_path); } else if ($extensao == 'png') { $img = @imagecreatefrompng($image_path); // Se a versão do GD incluir suporte a GIF, mostra... } elseif ($extensao == 'gif') { $img = @imagecreatefromgif($image_path); } // Se a imagem foi carregada com sucesso, testa o tamanho da mesma if ($img) { // Pega o tamanho da imagem e proporção de resize $width = imagesx($img); $height = imagesy($img); $scale = min(MAX_WIDTH/$width, MAX_HEIGHT/$height); // Se a imagem é maior que o permitido, encolhe ela! if ($scale < 1) { $new_width = floor($scale * $width); $new_height = floor($scale * $height); // Cria uma imagem temporária $tmp_img = imagecreatetruecolor($new_width, $new_height); // Copia e resize a imagem velha na nova imagecopyresized($tmp_img, $img, 0, 0, 0, 0, $new_width, $new_height, $width, $height); imagedestroy($img); $img = $tmp_img; } } // Cria uma imagem de erro se necessário if (!$img) { $img = imagecreate(MAX_WIDTH, MAX_HEIGHT); imagecolorallocate($img, 204, 204, 204); $c = imagecolorallocate($img, 153, 153, 153); $c1 = imagecolorallocate($img, 0, 0, 0); imageline($img, 0, 0, MAX_WIDTH, MAX_HEIGHT, $c); imageline($img, MAX_WIDTH, 0, 0, MAX_HEIGHT, $c); imagestring($img, 2, 12, 55, 'erro ao carregar imagem', $c1); } // Mostra a imagem header('Content-type: image/jpeg'); imagejpeg($img); ?> Atenção também na estrutura dos diretórios no servidor. []'Robson Mello
Um pequeno problema
Seguinte, curti muito o script e é exatamente o que estava procurando porém, com esse script tenho o seguinte problema. No PATH_IMG onde especifico o caminho onde estão as imagens, no meu caso necessito que ele seje dinamico, ou seja, minhas imagens não fica em apenas uma pasta e sim em várias pastas. Apenas para entender,no cadastro de anuncio, posso incluir até 3 fotos. Ao fazer o Upload ele cria uma pasta com o ID do anuncio dentro da pasta images_anuncio, ou seja, supondo anuncio id 01, vou ter : images_anuncio/01/foto01.jpg
Não consegui modificar o script para que esse caminho seje dinamico. Alguem teria a solução ?? Maurício ?
IMG_PATH dinâmico...
æ nirsu_php...
podes definir o IMG_PATH baseado no input o usuário, fazer um select no banner, etc. ao invés de define('PATH_IMG', 'images_anuncio'); $image_path = PATH_IMG . '/'. $id_anuncio .'/'. $image_file; ou algo assim... pegou?
Re: IMG_PATH dinâmico...
Ja tentei passando por parametro, com session, mas no seu script ele não pega nada, nenhuma var. Ja tentei fazer o seguinte, no nome do arquivo tb colocar o ID do anuncio, ex.: 01_foto01.jpg ai no seu script fazer talvez um explode para pegar esse ID.
Mas não consegui pegar o nome do arquivo no script. Tem alguma solução ?
Re: Re: IMG_PATH dinâmico...
Conseguiiiiiiii.........
Quando gero o nome dos arquivos das imagens, coloco tb o ID do anuncio, ficando por ex.: 1_foto1.jpg, 2_foto1.jpg, deste modo consigo pegar o ID do anuncio, fazendo com que ele pegue a imgem na pasta correta. Segue as alterações que fiz: $id = explode('_', $image_file); $PATH_IMG = "/home/botinas/public_html/projeto/RAMSHOP/images_anuncio/"; $PATH_IMG .= $id[0]; Valeu pelas ajudas, e muito bom esse script. Parabens
funcionou certinho
mto bom!
fiz uma adaptação do código pra gerar o thumbnail no momento em que envio uma imagem, e salva esse thumbnail no diretório....aí eu soh gero uma vez ele e depois soh chamo na hora de mostrar..... mas esse artigo foi muuuito útil..! valeu!
Um pequeno problema
E quando eu tento fazer o teste como foi citado acima e nada acontece:
www.endereco.com.br/thumb.php?imagem.php Não está aparecendo nada e nenhum erro. Oq pode ser ???? Se dou um echo nas var, ta tudo certo....
Boaaaa!
simples fácil e perfeito! Parabéns! Vai me ajudar bastante!
duvida
O script eh mto bom!!! Esta ajudando a resolver o meu problema, mas...:
Como eu faco pra salvar esse novo Thubm em uma pasta desejada??? Gratoooo
revisão de código...
opa
vivendo e aprendendo, certo? já se passou muito tempo desde a publicação deste, e já faço muitas coisas diferentes. Algumas delas não invalidam o artigo, como o fato de usar uma classe que faz isso e mais, outras impactam não só a performance como o resultado final. Então vou colocar essas alterações no próximo comentário, e o código-fonte alterado em http://www.mauwolff.com.br/php/thumb2.phps Um grande abraço a quem utilizou este artigo e foi útil, e quem teve problemas... tem de se ligar!!! :)
alterações
$sImagem = @file_get_contents($imagem);
com isso pego a imagem e carrego para a var sImagem. Assim posso usar $img = @imagecreatefromstring($sImagem), poupando o case que testava as extensões de arquivo. imagecreatefromstring detecta todos os tipos conhecidos, se ele não achar é porque daria erro mesmo. cache se já existir o arquivo thm_NOMEARQUIVO.EXT no diretório padrão, ele mostra esse thumbnail e termina o programa. Havia feito o artigo só didático, mas como tem gente usando direto, assim poupamos processadores. imagecopyresampled Na primeira versão usava imagecopyresized, que deixa os thumbs maiores e mais feios. Aprendizado com a vida, agora só uso resampled. if(!empty($imagemQs) && @file_exists($imagem)){ isso testa a existência do arquivo a ser redimensionado e que não veio a QueryString vazia. Se não fosse assim, iria criar arquivos adoidado no diretório. Acho que foi só. Espero que continue sendo útil. Abração mauwolff
conseguii!!!!
Ola pessoal...deu certo aki....mais os thumbs ficaram com uma pessima qualidade...queria saber se tem como aumentar um pouco a qualidade delas...
obrigado...e valeu pela ajuda!!
mais uma coisa
Galera qdo eu abro a página...ele aparece a imagem de erro....queria que ele ja abrisse a 1º foto do diretorio......Mais no resto ta perfeito!!
alguem pode ajudar? abraço!
Exelente
Muito bom meu amigo , faz tempo que eu tava procurando um script assim, facil, eficente e bonito.
legal
Problema
Não está gerando a imagem menor e também não Consigo Visualizar as Imagens. Só Consigo ver quando digito o caminho do arquivo.
exemplo:http://localhost/meudiretorio/meuarquivo.php?nome_da_imagem.jpg. Se não for assim aparece apenas a imagem erro ao carregar imagem.AJUDA.
Qualidade
Para ficar com maior qualidade, use: imagecopyresampled(); no lugar de imagecopyresized();.
Abraços... hugo@hugonogueira.com
Classe para geração de thumb e redimensionamentos
Tenho uma classe publicada que faz o trabalho completo de redimensionamento (geração de thumbnails) para JPG, PNG e/ou GIF: http://www.phpbrasil.com/scripts/script.php/id/1451
Novas versões... pouca mudança porém valiosa...
refiz o código, por favor baixe as novas versões em:
http://www.mauwolff.com.br/php/thumb2.phps http://www.mauwolff.com.br/php/index_thumb2.phps e podes testar em: http://www.mauwolff.com.br/php/index_thumb2.php Um dia posto aqui a classe que uso atualmente. Mas para aprendizado, acho que é melhor entender o que a classe faz, assim vc pode criar a sua própria. Grato! Mauricio Wolff
Bom artigo
bom artigo, havia feito algo semelhante. o problema é que o usuário fica sem o thumbnail em cache, ou seja: toda vez que ele voltar para a pagina, o browser carrega o thumbnail novamente.
Valeu
Ei realmente valeu a dica, estou começando no php espero que encontr ajuda com todos vcs.
Exibição das imagens
pessoal, gostaria de tirar uma dívida, as imagens irão aparecer uma embaixo da outra? se sim, é possível colocar em coluna de 4 por exemplo?
centralizar
Gostaria de centralizar a imagem nesse thumb. Não estou conseguindo.
pequeno probleminha.
cara tudo correu certinho, só tem um probleminha, quando clico na imagem, ela não redireciona para o endereço correto ocasionando o seguinte erro:
Objeto não encontrado! A URL requisitada não foi encontrada neste servidor. O link na página referida parece estar com algum erro ou desatualizado. Por favor informe o autor desta página sobre o erro. Se você acredita ter encontrado um problema no servidor, por favor entre em contato com o webmaster. Error 404 localhost 03/26/07 12:58:24 Apache/2.2.2 (Win32) DAV/2 mod_ssl/2.2.2 OpenSSL/0.9.8b mod_autoindex_color PHP/5.1.4 se alguém puder me ajudar agradeço. mais só em fazer os thumbs já fiquei satisfeito ótimo tuto, valeu mesmo.
Só funciona com imagens de determinado tamanho
Testei e está funcionando, exceto com imagens maiores. Tenho um sistema onde o cliente publica fotos direto da câmera digital e às vezes as fotos estão em 2000 pixels ou mais de largura. Essas imagens parecem não funcionar no script.
Vocês sabem se é algum erro do script ou é alguma limitação do GD2 ou mesmo do servidor? |
|
|||||||||||||||||||||||||||||||||
|
|
| João Prado Maia | ||