← PHP

Script de Aleatoriedade de imagem diferente.

Lida 3820 vezes

Offline

killerbr 
Membro
Mensagens 10 Gostos 0
Troféus totais: 17
Trófeus: (Ver todos)
Super Combination Combination Topic Starter Level 3 Level 2 Level 1 10 Posts First Post Karma Eighth year Anniversary

Olá!
Eu preciso muito de ajuda, infelizmente estou tendo dor de cabeça com um script que tive a idéia de fazer.

Espero que entendam:

Eu tenho um site, que costuma anunciar em outros sites. Todos os tipos de tamanhos de anuncios, mais geralmente no formato GIF ou JPG.
Para isso eu envio para o outro webmaster um codigo do meu banner/botao, por exemplo:


Código: [Seleccione]
<a href="http://www.site.com"  target="_blank"><img src="http://www.site.com/img/botao_120x60.gif" alt="Site" width="120" height="60" border="0" title="site" /></a>
Então, sempre que eu quiser mudar o banner eu preciso entrar no meu ftp e trocar a imagem botao_120x60.gif, poiz mudando diariamente eu tenho um retorno bem maior de anunciantes.

A anos eu vi um anunciante usando um codigo assim:

Código: [Seleccione]
<a href="http://www.site.com"  target="_blank"><img src="http://www.site.com/img/120_60/anuncios.PHP" alt="Site" width="120" height="60" border="0" title="site" /></a>
E assim todo reload de pagina, era sorteado um banner dentro da pasta 120_60 (por exemplo), e era jogado no lugar do anuncios.php.

Tudo bem simples, o anuncios.php simplesmente pegava uma imagem aleatoriamente dentro da pasta onde ele se encontrava, podendo assim eu usar o script em varios tamanhos de banners diferentes, sem maiores complicações.

Eu passei um bom tempo tentando, nao sei programar mesmo, então um amigo me ajudou, e cheguei a esse codigo:


Código: [Seleccione]
<?php

function retornaEstencao($arq)
{
$quantas_letras strlen($arq);
return substr($arq,$quantas_letras-3,3);
}

if (
$diretorio opendir(".")){
while (false !== ($tds_arq readdir($diretorio)))
{
if (substr($tds_arq,0,1)  <> "." and $tds_arq <> "Thumbs.db" and $tds_arq <> "index.php" and $tds_arq <> "thumbs.db" and $tds_arq <> "img.php" )
{

$estencao retornaEstencao($tds_arq);
if($estencao == "jpg" or $estencao == "JPG" or $estencao == "png" or $estencao == "PNG" or $estencao == "gif" or $estencao == "GIF")
{
$imagem[]  =  $tds_arq;
}


}
}

$aleatoria rand(0,count($imagem)-1);


$estencao retornaEstencao($imagem[$aleatoria]);

switch ($estencao)
{
case "jpg":
$aki = @imagecreatefromjpeg($imagem[$aleatoria]);
imagejpeg($aki);
imagedestroy($aki);
break;
case "JPG":
$aki = @imagecreatefromjpeg($imagem[$aleatoria]);
imagejpeg($aki);
imagedestroy($aki);
break;
case "png":
$aki = @imagecreatefrompng($imagem[$aleatoria]);
imagepng($aki);
imagedestroy($aki);
break;
case "PNG":
$aki = @imagecreatefrompng($imagem[$aleatoria]);
imagepng($aki);
imagedestroy($aki);
break;
case "gif":
$aki = @imagecreatefromgif($imagem[$aleatoria]);
imagegif($aki);
imagedestroy($aki);
break;
}



}
?>



O PROBLEMA:

Sempre que a imagem é uma gif animada, apenas o primeiro frame é exibido.
Eu preciso muito de ajuda, aqui é minha ultima tentativa.
Se alguem tiver um script do jeito que eu estou pedindo, ou puder me ajudar com esse, seria de grande ajuda.
Aguardo.
Offline

anjo2 
Membro
Mensagens 3020 Gostos 0
Troféus totais: 31
Trófeus: (Ver todos)
Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Poll Starter Level 5 Level 4 Level 3 Level 2

Offline

killerbr 
Membro
Mensagens 10 Gostos 0
Troféus totais: 17
Trófeus: (Ver todos)
Super Combination Combination Topic Starter Level 3 Level 2 Level 1 10 Posts First Post Karma Eighth year Anniversary

Sim amigo, o meu problema é o seguinte:

o .php deve ficar dentro do codigo da imagem, realmente como se fosse uma imagem, entende?
Esse codigo sera inserido em outros sites, os quais eu anuncio.
A menos que eu nao tenha entendido nada do outro topico, ele apenas serve para fazer um header aleatorio certo?
Offline

anjo2 
Membro
Mensagens 3020 Gostos 0
Troféus totais: 31
Trófeus: (Ver todos)
Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Poll Starter Level 5 Level 4 Level 3 Level 2

Serve para uma imagem aleatória, dependendo dos headers poderá funcionar bem ou mal.
Offline

Media Portugal 
Membro
Mensagens 47 Gostos 0
Troféus totais: 19
Trófeus: (Ver todos)
Super Combination Combination Topic Starter Level 4 Level 3 Level 2 Level 1 10 Posts First Post Karma

Viva!

O script poderia ser muito simplificado (para metade do código).

Ao mudar a linha return substr($arq,$quantas_letras-3,3);
para:
return strtolower(substr($arq,$quantas_letras-3,3); strtolower())


Na instrução baixo basta colocar apenas as condições em "letras pequenas"
switch ($estencao)
   {
      case "jpg":



Adiante.. em relação ao envio de imagens terás primeiro de enviar os MIME TYPEs

Vê mais informação em:
http://pt2.php.net/manual/en/ref.fileinfo.php


Offline

BootSector 
Membro
Mensagens 155 Gostos 0
Feedback +1

Troféus totais: 27
Trófeus: (Ver todos)
Level 5 Avatar Tenth year Anniversary Nineth year Anniversary Super Combination Combination Topic Starter Poll Voter Level 4 Level 3

Boas,

Eu uso isso nos meus banner ;)

Altera o teu output para:

case "gif":
         Header("Content-Type: image/gif");
         $fn=fopen($imagem[$aleatoria],"r");
         fpassthru($fn);
         break;


E faz-se o chocapic!

Cumprimentos