Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Fagner

Onde esta sendo gerado as thumbs

Recommended Posts

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

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

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

Desculpe minha ignorancia, me explique oque é on-the-fly

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

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

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

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

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

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

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

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.