Bannières AU

Venez prendre connaissance des changements concernant la communauté d'Anime-Ultime

Modérateur: Modérateurs

laKEl tu Prfert ?

Le sondage s’est clôturé le 28 Août 2011, 00:10

1 la 1
10
8%
2 la 2
21
18%
3 la 3
8
7%
4 la 4
20
17%
5 la 5
6
5%
6 la 6
54
45%
 
Nombre total de votes : 119

Re: Bannières AU

Messagepar amoniack » 31 Août 2011, 23:52

2SY9EG a écrit:Bon, j'me suis amusé à un petit truc, mais j'ai un effet secondaire auquel je m'attendais un peu.
Les couleurs sont dénaturées (vive la gestion de la transparence des PNG par PHP).
Enfin, y'a quelques mystères sous le capot ... (il part d'un jpeg pour au final me les dénaturer quand même, chelou)

Code : Tout sélectionner
<?
/* 
*  Génération de la bannière qui change toute seule ooh c'est joooliii.
*/

// ça tombe bien, la somme des votes fait 119, soit presque 120 minutes
$votes = array(10,21,8,20,06,55);

// on ramène le temps à nos 120 minutes
$temps = time()%(3600*2) / 60;
  
// on détermine l'identifiant de la bannière
$i = 0;
$nbVotes = sizeof($votes);
while(
$temps > 0 || $i > $nbVotes) {    
  $temps 
= $temps - $votes[$i];
  $i++;
}

$idBanniere = $i;
// rajouter le "0" au nom du fichier pour les bannières numérotées de 1 à 9.
$idBanniere = ( $idBanniere < 10 ) ? "0".$idBanniere : $idBanniere;

// on affiche
$pathBanniere = "bannieres/".$idBanniere.".jpg";
$LeJpegAAfficherSaMere = imagecreatefromjpeg($pathBanniere);
header('Content-Type: image/jpeg');
imagejpeg($LeJpegAAfficherSaMere, NULL, 85);
?>


En résumé pour les non geeks, chacun de vos votes aura servi :D car aura accordé 2 minutes d'affichage (toutes les 2h) à la bannière pour laquelle vous avez voté.


J'aime x) Trés trés astucieux ! et j'aimerais ajouter mon code au cas où quelqu'un aimerais s'en servir ( c'est pour afficher une image d'un dossier au hasard à chaque Actualisation de la page!)

Code : Tout sélectionner
<?php 
// Ouvre un dossier bien connu, et liste tous les fichiers 
$directory = 'images/'; 
// Définition d'$image comme tableau 
$image = array(); 
 
//on vérifie s’il s’agit bien d’un répertoire 
 if (is_dir($directory)) 
 
{ 
 
//on ouvre le repertoire 
 if ($dh = opendir($directory)) 
 
{ 
 
//Lit une entrée du dossier et readdir retourne le nom du fichier 
 while (($file = readdir($dh)) !== false) 
 
{ 
 
// Vérifie de ne pas prendre en compte les dossier ... 
 if ($file != '...' && $file != '..' && $file != '.') 
 
{ 
 
// On ajoute le nom du fichier dans le tableau 
 $image[] = $file; 
 
} 
 
} 
 
//On ferme le repertoire 
 closedir($dh); 
 
// On récupère le nombre d'image total 
 $total = count($image)-1; 
 
// On prend une valeur au hasard entre 1 et le nombre total d'images 
 $aleatoire = rand(0, $total); 
 
// On récupère le nom de l'image avec le chiffre hasard 
 $image_afficher = "$image[$aleatoire]"; 
 
// Affiche l'image du hasard :p 
 print "<img style='width: 100%; height: 100%;' src='$directory/$image_afficher'>"; 
 
} 
 
} 
?>
Image
Avatar de l’utilisateur
amoniack
Résident(e)
 
Message(s) : 466
Enregistré le: 12 Juil 2011, 20:45
Localisation : Avignon(84)

Re: Bannières AU

Messagepar ryoku » 01 Sep 2011, 02:23

2SY9EG a écrit:Bon, j'me suis amusé à un petit truc, mais j'ai un effet secondaire auquel je m'attendais un peu.
Les couleurs sont dénaturées (vive la gestion de la transparence des PNG par PHP).
Enfin, y'a quelques mystères sous le capot ... (il part d'un jpeg pour au final me les dénaturer quand même, chelou)

Code : Tout sélectionner
<?
/* 
*  Génération de la bannière qui change toute seule ooh c'est joooliii.
*/

// ça tombe bien, la somme des votes fait 119, soit presque 120 minutes
$votes = array(10,21,8,20,06,55);

// on ramène le temps à nos 120 minutes
$temps = time()%(3600*2) / 60;
  
// on détermine l'identifiant de la bannière
$i = 0;
$nbVotes = sizeof($votes);
while(
$temps > 0 || $i > $nbVotes) {    
  $temps 
= $temps - $votes[$i];
  $i++;
}

$idBanniere = $i;
// rajouter le "0" au nom du fichier pour les bannières numérotées de 1 à 9.
$idBanniere = ( $idBanniere < 10 ) ? "0".$idBanniere : $idBanniere;

// on affiche
$pathBanniere = "bannieres/".$idBanniere.".jpg";
$LeJpegAAfficherSaMere = imagecreatefromjpeg($pathBanniere);
header('Content-Type: image/jpeg');
imagejpeg($LeJpegAAfficherSaMere, NULL, 85);
?>


En résumé pour les non geeks, chacun de vos votes aura servi :D car aura accordé 2 minutes d'affichage (toutes les 2h) à la bannière pour laquelle vous avez voté.



Pourquoi essaye-tu de recompresser la bannière ?
Affiche l'original avec un simple file_get_contents. Pense par contre à rajouter les headers de cache-content pour un rechargement.
Image
Avatar de l’utilisateur
ryoku
Divinité Ultime
 
Message(s) : 1689
Enregistré le: 13 Déc 2005, 22:51

Re: Bannières AU

Messagepar Yukina-chan » 01 Sep 2011, 03:58

donc en gros si on a voté pour la 4 ça n'affichera que la 4 et aucune des autres?
VOUS Z'AIME TOUS!!!!!!^^ CÂLIN A TOUS!!!!!^^"
Un vrais trésor c'est avant tout un souvenir, en cela pour rien au monde je ne t'abandonnerais"
Image
Image
Modérateur Anime-Ultime n'hésitez pas à me mp en cas de soucis ^^!
mes fonctions ici
Avatar de l’utilisateur
Yukina-chan
Boulette-Time
Boulette-Time
 
Message(s) : 1167
Enregistré le: 01 Déc 2008, 20:25
Localisation : Plus je serais loin et mieux cela vaudra pour vous :twisted: !

Re: Bannières AU

Messagepar 2SY9EG » 01 Sep 2011, 10:52

@ryoku,
Merci, effectivement, ça règle le problème de couleurs.
Quant au cache je sais pas non plus sur quoi l'ajuster, donc j'ai juste mis ça:
Code : Tout sélectionner
// on affiche
$pathBanniere = "bannieres/".$idBanniere.".jpg";
header('Content-Type: image/jpeg');
header('Cache-Control: must-revalidate');
echo file_get_contents($pathBanniere); 


@yukina,
C'est plutôt que, à 12:00, les visiteurs verront la bannière 1, puis après un certain temps (plus ou moins long selon le nombre de votes remportés), genre vers 12:24, ils en verront une autre. Et comme la bannière 6 a remporté beaucoup de votes, elle restera plus longtemps affichée. Et rebelotte à 14h. Je sais pas si c'est plus clair dit comme ça ;)
Avatar de l’utilisateur
2SY9EG
Technicien de Surface Ultime
 
Message(s) : 927
Enregistré le: 07 Août 2010, 13:04

Re: Bannières AU

Messagepar mjeff » 01 Sep 2011, 20:43

yeah sympa, ce sera toujours à midi qu'on verra la ban 1 par exemple ?
Bienvenue sur Anime-Ultime!
Image
Welcome! If you have any questions regarding the site, please send me a pm!
Avatar de l’utilisateur
mjeff
Terreur Ultime
 
Message(s) : 8337
Enregistré le: 14 Déc 2005, 23:21
Localisation : Au bord de l'eau

Re: Bannières AU

Messagepar 2SY9EG » 01 Sep 2011, 23:14

Ouaip.
Avatar de l’utilisateur
2SY9EG
Technicien de Surface Ultime
 
Message(s) : 927
Enregistré le: 07 Août 2010, 13:04

Re: Bannières AU

Messagepar mjeff » 02 Sep 2011, 11:13

tu peux pas mettre un petit random ? ._.
Bienvenue sur Anime-Ultime!
Image
Welcome! If you have any questions regarding the site, please send me a pm!
Avatar de l’utilisateur
mjeff
Terreur Ultime
 
Message(s) : 8337
Enregistré le: 14 Déc 2005, 23:21
Localisation : Au bord de l'eau

Re: Bannières AU

Messagepar 2SY9EG » 02 Sep 2011, 15:56

C'est en place, j'ai pas testé intensivement, il se peut que je me sois gouré et que la durée d'affichage de chaque bannière ne soit pas le bon. :P

Code : Tout sélectionner

<?
/* 
*  Fichier: forum_banniere.php
*  Version: 0.2
*  Description: Affichage d'une bannière en fonction des résultats d'un sondage
*  Licence: domaine public
*/

// ça tombe bien, la somme des votes fait 119, soit presque 120 minutes
$votes = array(10,21,8,20,06,55);

$tempsNow = time()+60*60*0; // avancer le temps fictivement, miraculeux

// on rabat le temps à une periode de 120 minutes
$periode2h = $tempsNow % 3600 / (60 * 2);
  
// mystère
$idPeriode24h = round( ($tempsNow % (3600*24)) / (3600*2) );
srand($idPeriode24h);
$ordre = array(rand(),rand(),rand(),rand(),rand(),rand());
asort($ordre);
$ordreBannieres = array_keys($ordre); // attention, l'index va de 0 à 5

// Quelle banniere on affiche alors en fin de compte avec tout ça, heing ?
$i = 0;
$nbVotes = sizeof($votes);
while(
$periode2h > 0 || $i > $nbVotes) {
  $j = $ordreBannieres[$i];
  $periode2h = $periode2h - $votes[$j];
  $i++;
}

$j = $j+1; // on corrige l'index

// rajouter le "0" au nom du fichier pour les bannières numérotées de 1 à 9.
$idBanniere = ( $j < 10 ) ? "0".$j : $j;

// Y'a plus qu'a l'afficher, mais c'était pas si simple quand même
$pathBanniere = "bannieres/".$idBanniere.".jpg";
header('Content-Type: image/jpeg');
header('Cache-Control: must-revalidate');
echo file_get_contents($pathBanniere);
?>
Avatar de l’utilisateur
2SY9EG
Technicien de Surface Ultime
 
Message(s) : 927
Enregistré le: 07 Août 2010, 13:04

Re: Bannières AU

Messagepar mjeff » 02 Sep 2011, 18:26

sympa 2S' merci =)
Bienvenue sur Anime-Ultime!
Image
Welcome! If you have any questions regarding the site, please send me a pm!
Avatar de l’utilisateur
mjeff
Terreur Ultime
 
Message(s) : 8337
Enregistré le: 14 Déc 2005, 23:21
Localisation : Au bord de l'eau

Re: Bannières AU

Messagepar Extraxx » 02 Sep 2011, 19:00

OMG :o tu gère comme une bête xD
Respect :D
Image
Avatar de l’utilisateur
Extraxx
Apprenti voyeur
 
Message(s) : 93
Enregistré le: 28 Mars 2011, 19:43
Localisation : Nissa la bella

Précédent

Retour vers Communiqués officiels

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 2 invités