Fagner 1 Denunciar post Postado Fevereiro 3, 2004 uso o codigo abaixo para gerar thumbs para uma galeria do meu site, porem creio eu que as thumbs estao sendo geradas dentro do servidor.. se este for o caso elas permaneceram lah apos o usuario sair ou se deletarao automaticamente, caso permaneçam la tem como eu fazer com que elas sejem geradas dentro de um diretorio especifico na maquina do internauta tipo c: Segue codigo $imagem = "$dir/thumbs/$imagens[$i]"; // Tipo: JPG $thumbnail = explode('.', $imagem); $thumbnail = $thumbnail[0]."_thumbnail.jpg"; $x = 60; // Largura $y = 50; // Altura $img_origem = ImageCreateFromJPEG($imagem); $origem_x = imagesx($img_origem); // Largura $origem_y = imagesy($img_origem); // Altura if($origem_x > $origem_y) { // Se a largura for maior que a altura $final_x = $x; // A largura será a do thumbnail $final_y = floor($x * $origem_y / $origem_x); // A altura é calculada $f_x = 0; // Colar no x = 0 $f_y = round(($y / 2) - ($final_y / 2)); // Centralizar a imagem no meio y do thumbnail } else { // Se a altura for maior ou igual à largura $final_x = floor($y * $origem_x / $origem_y); // Calcula a largura $final_y = $y; // A altura será a do thumbnail $f_x = round(($x / 2) - ($final_x / 2)); // Centraliza a imagem no meio x do thumbnail $f_y = 0; // Colar no y = 0 } $img_final = ImageCreateTrueColor($x,$y); ImageCopyResized($img_final, $img_origem, $f_x, $f_y, 0, 0, $final_x, $final_y, $origem_x, $origem_y); ImageJPEG($img_final, $thumbnail); ImageDestroy($img_origem); ImageDestroy($img_final); Compartilhar este post Link para o post Compartilhar em outros sites
Alisson Rodrigues 3 Denunciar post Postado Fevereiro 3, 2004 você pode colocar o endereço no lugar do $thumbnail, C:\ por exemplo, mas se o cara usar Linux por exemplo não vai dar certo, mesmo no windows, vai aparecer aquela tela de segurança do IE, perguntando se ele aceita receber arquivos que seu site está mandando. ;) Compartilhar este post Link para o post Compartilhar em outros sites
wxkj 0 Denunciar post Postado Fevereiro 3, 2004 as 3 primeiras linhas já dizem:$imagem = "$dir/thumbs/$imagens[$i]"; // Tipo: JPG $thumbnail = explode('.', $imagem); $thumbnail = $thumbnail[0]."_thumbnail.jpg";o thumb é gerado na pasta "thumbs" do diretório $dir e recebe a seguinte nomenclatura:$thumbnail[0]."_thumbnail.jpgse quiser gerar on-the-fly basta especificar o cabeçalho dizendo que se trata de um arquivo do tipo image/jpg e imprimir o valor de $img_finale comentar a antipenúltima linha:ImageJPEG($img_final, $thumbnail); Compartilhar este post Link para o post Compartilhar em outros sites
Fagner 1 Denunciar post Postado Fevereiro 5, 2004 Desculpe minha ignorancia, me explique oque é on-the-fly Compartilhar este post Link para o post Compartilhar em outros sites
Alisson Rodrigues 3 Denunciar post Postado Fevereiro 5, 2004 Acho que é quando é gerado uma imagem temporária, pra isso no lugar de: imagejpeg($img, "endereço");Coloque só: imagejpeg($img); ;) Compartilhar este post Link para o post Compartilhar em outros sites
wxkj 0 Denunciar post Postado Fevereiro 5, 2004 on-the-fly éh....traduzindo seria "gerado na hora"o servidor excuta o script PHP do thumbnail e ao invés de gavar num arquivo e salvar no servidor o stream desse arquivo é enviado ao browser do cliente.eu acho melhor gerar e salvar no servidor pra não perder tempo com processamento. Compartilhar este post Link para o post Compartilhar em outros sites
Fagner 1 Denunciar post Postado Fevereiro 5, 2004 Achei muito interessante o on-the-fly pra mim sera otimo, porem substitui a linha ImageJPEG($img_final, $thumbnail);por ImageJPEG($img_final); e mandei imprimir a variavel $img_final o resultado foi um monte de caracteres no meu browser saberia me dizer o pq? Compartilhar este post Link para o post Compartilhar em outros sites
Alisson Rodrigues 3 Denunciar post Postado Fevereiro 5, 2004 não precisa colocar echo, print ou coisa do tipo, coloque só o imagejpeg($img_final) e pronto, exiba a pag que vai aparecer a img. ;) Compartilhar este post Link para o post Compartilhar em outros sites
wxkj 0 Denunciar post Postado Fevereiro 6, 2004 já tinha tinha dito, você deve enviar um cabeçalho dizendo se tratar de um arquivo image/jpg e não não um arquivo text/html <? // aqui o script que gera thumbs header("Content-type: image/jpg"); //header("Content-Length: ".$tam); header("Content-Disposition: inline; filename=nome_da_imagem"); echo ImageJPEG($img_final); ?> Compartilhar este post Link para o post Compartilhar em outros sites
Alisson Rodrigues 3 Denunciar post Postado Fevereiro 6, 2004 Aqui nem preciso colocar esse cabeçalho, ele aparece na boa. Compartilhar este post Link para o post Compartilhar em outros sites
Fagner 1 Denunciar post Postado Fevereiro 6, 2004 Ainda nao esta dando certo... estou postando o codigo para caso alguem queire usar e para alguem me ajudar.. $imagem = "$dir/$imagens[$i]"; // Tipo: JPG $thumbnail = explode('.', $imagem); $thumbnail = $thumbnail[0]."_thumbnail.jpg"; $x = 70; // Largura $y = 52; // Altura $img_origem = ImageCreateFromJPEG($imagem); $origem_x = imagesx($img_origem); // Largura $origem_y = imagesy($img_origem); // Altura if($origem_x > $origem_y) { // Se a largura for maior que a altura $final_x = $x; // A largura será a do thumbnail $final_y = floor($x * $origem_y / $origem_x); // A altura é calculada $f_x = 0; // Colar no x = 0 $f_y = round(($y / 2) - ($final_y / 2)); // Centralizar a imagem no meio y do thumbnail } else { // Se a altura for maior ou igual à largura $final_x = floor($y * $origem_x / $origem_y); // Calcula a largura $final_y = $y; // A altura será a do thumbnail $f_x = round(($x / 2) - ($final_x / 2)); // Centraliza a imagem no meio x do thumbnail $f_y = 0; // Colar no y = 0 } $img_final = ImageCreateTrueColor($x,$y); ImageCopyResized($img_final, $img_origem, $f_x, $f_y, 0, 0, $final_x, $final_y, $origem_x, $origem_y); ImageJPEG($img_final); ImageDestroy($img_origem); ImageDestroy($img_final); header("Content-type: image/jpg");?> <a href="zoom.php?dir=<? echo "$dir";?>&foto=<? echo "$imagens[$i]";?>" target="exibe_foto"> <img src="<? echo ImageJPEG($img_final); ?>" hspace="1" vspace="1" border="1"></a> <? }?>O erro continua, sai um monte de caracteres ao inves da foto. Compartilhar este post Link para o post Compartilhar em outros sites
wxkj 0 Denunciar post Postado Fevereiro 6, 2004 não é um arquivo text/html !!!é um image/jpgtira isso aqui Citar <a href="zoom.php?dir=<? echo "$dir";?>&foto=<? echo "$imagens[$i]";?>" target="exibe_foto"> <img src="<? echo ImageJPEG($img_final); ?>" hspace="1" vspace="1" border="1"></a>e tudo que tiver texto, espaço, quealquer saída. Apenas imprima o valor de ImageJPEG($img_final); Compartilhar este post Link para o post Compartilhar em outros sites
Fagner 1 Denunciar post Postado Fevereiro 6, 2004 Hehehehe certo mas é o codigo que voce pediu pra mim tirar que uso como link para abrir a foto de tamanho normal. posso colocar tudo aqui em um arquivo sem text/html e traze-lo atraves de um include e mostrar a figura dentro de um arquivo contendo text/html simplesmente dando um Citar ImageJPEG($img_final); Compartilhar este post Link para o post Compartilhar em outros sites
Alisson Rodrigues 3 Denunciar post Postado Fevereiro 6, 2004 você faz outra página com link de imagem para essa página: <img src="thumb.php">Aí tu coloca link nessa página, tendeu? ;) Compartilhar este post Link para o post Compartilhar em outros sites
Fagner 1 Denunciar post Postado Fevereiro 6, 2004 Ultima tentativa... ou agora eu consigo ou vou criar as thumbs na unha mesmo, segue abaixo todo o codigo da galeria.1º Busca as fotos de determinado diretorio2º Monta as thumbs e cria as colunas.3º Cria paginação Citar <style type="text/css"> A {text-decoration: none}</style><style fprolloverstyle>A:hover {color: #0099cc; text-decoration: underline}</style></head><body bgcolor="#FFCC00" topmargin="0" leftmargin="0" link="#000000" alink="#000000" vlink="#000000"><table cellpadding="0" cellspacing="0" border="0"> <tr> <td width="230" height="240" valign="top"> <?$handle = opendir($dir);$ext = "jpg";$indice = 0;$ipp = 12;while (false !== ($file = readdir($handle))){ $pathdata = pathinfo($file); if (!is_dir($file) && ($pathdata["extension"] == strtolower($ext)) || ($pathdata["extension"] == strtoupper($ext))) { $imagens[$indice] = $file; $indice++; }}$pagina = 1;if ($_GET['pg']) $pagina = $_GET['pg'];$paginas = ceil(count($imagens) / $ipp);$inicio = $pg * $ipp;for ($i = $inicio; $i < ($inicio + $ipp); $i++)if($imagens[$i] != ""){ $imagem = "$dir/$imagens[$i]"; // Tipo: JPG $thumbnail = explode('.', $imagem); $thumbnail = $thumbnail[0]."_thumbnail.jpg"; $x = 70; // Largura $y = 52; // Altura $img_origem = ImageCreateFromJPEG($imagem); $origem_x = imagesx($img_origem); // Largura $origem_y = imagesy($img_origem); // Altura if($origem_x > $origem_y) { // Se a largura for maior que a altura $final_x = $x; // A largura será a do thumbnail $final_y = floor($x * $origem_y / $origem_x); // A altura é calculada $f_x = 0; // Colar no x = 0 $f_y = round(($y / 2) - ($final_y / 2)); // Centralizar a imagem no meio y do thumbnail } else { // Se a altura for maior ou igual à largura $final_x = floor($y * $origem_x / $origem_y); // Calcula a largura $final_y = $y; // A altura será a do thumbnail $f_x = round(($x / 2) - ($final_x / 2)); // Centraliza a imagem no meio x do thumbnail $f_y = 0; // Colar no y = 0 } $img_final = ImageCreateTrueColor($x,$y); ImageCopyResized($img_final, $img_origem, $f_x, $f_y, 0, 0, $final_x, $final_y, $origem_x, $origem_y); ImageJPEG($img_final, $thumbnail); ImageDestroy($img_origem); ImageDestroy($img_final);?> <a href="zoom.php?dir=<? echo "$dir";?>&foto=<? echo "$imagens[$i]";?>" target="exibe_foto"> <img src="<? echo "$thumbnail";?>" hspace="1" vspace="1" border="1"></a> <? }?> </td> </tr><tr> <TD width="230" align="left" valign="top"> <HR size="1" noshade color="#000000"><table width="230" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="70" valign="top"><font size="1" face="Verdana, Tahoma, MS Sans Serif"><strong> <? $total = ceil(count($imagens)); echo $total; ?> </strong> Fotos.</font></td> <td align="right" valign="top"> <font size="1" face="Verdana, Tahoma, MS Sans Serif"><strong>Pgs:</strong> | <?/*if ($pg > 0) print "<a href=\"?dir=$dir&pg=" . ($pg - 1) . "\">« Anterior</a> |";else print "« Anterior |";*/for($i = 0; $i < $paginas; $i++){ if ($i == $pg) print " <b>" . ($i + 1) . "</b> |"; else print " <a href=\"?dir=$dir&pg=" . ($i) . "\">" . ($i + 1) . "</a> |";}/*if($pg < ($paginas - 1)) print " <a href=\"?dir=$dir&pg=" . ($pg + 1) . "\">Próxima »</a>";else print " Próxima »";*/?> </font> </td> </tr></table></TD></tr></table></body>O Problema é as quero gerar as thumbs com esse sistema on-the-fly que me postaram aqui porem nao estou conseguindo devido a algum problema.Essa galeria é excelente se esse sistema de gerar as thumbs automaticamente funcionar como espero vai ser uma #@?$%~ DUMA GALERIA. Compartilhar este post Link para o post Compartilhar em outros sites
Alisson Rodrigues 3 Denunciar post Postado Fevereiro 6, 2004 No lugar de: ImageCopyResized($img_final, $img_origem, $f_x, $f_y, 0, 0, $final_x, $final_y, $origem_x, $origem_y);tente colocar: ImageCopyResampled($img_final, $img_origem, 0, 0, 0, 0, $x, $y, $origem_x, $origem_y);Ve se dá certo. Compartilhar este post Link para o post Compartilhar em outros sites
Fagner 1 Denunciar post Postado Fevereiro 6, 2004 Nao deu certo. Pra entender exatamente oque esta acontecendo acesse o link http://www.totals.com.br/~topadmin/galeria/ clique sobre qualquer galeria e apos abrir a popup alterne na paginação das thumbs clique sobre a 2 volte pra 1 clique na 2 novamente depois volte pra 1 ele vai lotando o servidor e criando mais paginas na paginação, isso vai acontecendo ate o servidor lotar. Gostei muito dessa opção on-the-fly mas ta f*** pra mim fazer isso funcionar. Compartilhar este post Link para o post Compartilhar em outros sites
Alisson Rodrigues 3 Denunciar post Postado Fevereiro 6, 2004 Ué, parece que as thumbs estão funcionando, a paginação é que está errada, não é? :huh: Compartilhar este post Link para o post Compartilhar em outros sites
Fagner 1 Denunciar post Postado Fevereiro 6, 2004 Nao, a paginação esta correta ela pagina de 12 em 12 fotos, dai quando você seleciona a segunda pagina lembrando que ao abrir a pagina 1 ja gerou as 12 primeiras thumbs, qdo você seleciona a segunda pagina gera as 12 thumbs da segunda certo, se voltar para a primeira pagina o codigo que gera as thumbs gera tudo novamente as 12 thumbs geradas anteriormente, armazenando tudo isso no servidor. Compartilhar este post Link para o post Compartilhar em outros sites
Alisson Rodrigues 3 Denunciar post Postado Fevereiro 6, 2004 Mas se for on-the-fly não tem problema, ou estou entendendo errado. Compartilhar este post Link para o post Compartilhar em outros sites