PDA

Επιστροφή στο Forum : Random Image



Voldemort
30-06-05, 18:08
Έχω δει κάποιον που έχει ένα avatar, το οποίο σε κάθε refresh αλλάζει http://www.myphone.gr/forum/image/smilies/w00t.gif Λογικά, θα έχει επιλέξει 10-15 εικόνες, και σε κάθε refresh, μία από αυτές τυχαία έρχεται... Ξέρει κανείς πως γίνεται; http://www.myphone.gr/forum/image/smilies/redface.gif

Ρώτησα και σε ένα άλλο φόρουμ, αλλά άρχισαν να με δουλεύουν... :evil: :ork :dwarf

GoofyX
30-06-05, 19:49
Αυτό μπορεί να γίνει εύκολα με php κώδικα. Έχεις μια σελίδα php της οποίας το content-type το ορίζεις σε image/gif για παράδειγμα κι έχεις μια σειρά από εικόνες τις οποίες φορτώνεις μέσω μια συνάρτησης php. Κάθε φορά που καλείς τη σελίδα, βάζεις και κώδικα για να φορτώνει κάθε φορά διαφορετική εικόνα από το filesystem. Οπότε ο χρήστης αυτό που βλέπει καλώντας κάθε φορά τη σελίδα είναι διαφορετική εικόνα. Είναι αρκετά εύκολο, αν θέλεις πες να σου πω ακριβώς πως γίνεται.

Voldemort
30-06-05, 22:38
Θέλω :biggrin: :p

GoofyX
01-07-05, 20:22
Ο κώδικας της σελίδας:

<?php
header("Content-type: image/gif"); // <--

$num = 2;

$filename = "avatar.txt";

$filep = fopen($filename, "r+");

if ($filep)
{
$num = fscanf($filep, "%d");
$im = imagecreatefromgif(your image); // <--
if ($num[0] == 4)
$num[0] = 1;
else
$num[0]++;
rewind($filep);
fwrite($filep, "$num[0]");
fclose($filep);
imagegif($im);
}
else
{
$im = imagecreatefromgif(default image); // <--
imagegif($im);
}
?>Οι γραμμές που σε ενδιαφέρουν στο τέλος έχουν το // <--, ενώ στη γραμμή
$im = imagecreatefromgif(your image);βάζεις το όνομα του αρχείου σου της εικόνας (μπορείς να έχεις μια σειρά από αρχεία, για παράδειγμα image1.gif, image2.gif, κ.ο.κ. και με μια μεταβλητή να σχηματίζεις το κατάλληλο string). Παραπάνω χρησιμοποιείται κι ένα αρχείο στο για την "τυχαιοποίηση" της εικόνας που θα χρησιμοποιηθεί.

Voldemort
01-07-05, 23:29
To filename που ανοίγει είναι εκεί που θα αποθηκεύσει την εικόνα; Γιατί όμως είναι .txt?

yiapap
02-07-05, 00:00
Έτσι το επέλεξε o GoofyX!
Εσύ πεστο .asc ή .whatever
Μόνο φρόντισε στο ίδιο φάκελο με το php να βρίσκονται τα αρχεία εικόνων, το όνομα των οποίων εμπεριέχεται στο txt ;)

Voldemort
02-07-05, 09:17
gramps... Μπερδεύτηκα λιγάκι :what: OK, αυτό το .php θα το ανεβάσω στο hosting μου μέσω FTP, πως θα το βάλω ως υπογραφή/avatar? Αυτά με το βελάκι // <----- δεν πολυκαταλαβαίνω τι κάνουν, μπορείτε να μου πείτε τι κάνει το καθένα; Δεν ξέρω σχεδόν καθόλου php...

kubiak
02-07-05, 10:17
μήπως είναι σχόλια;

XPHSTOS29
02-07-05, 11:39
AΑναλογως την γλωσσα προγραματισμου υπαρχουν καποια συμβολα για σχολια.

Για την πολυ παλια basic και για batch αρχεια ειναι η εντολη rem απο το remark.

Στις νεωτερες γλωσσες χρησημοποιουνται συμβολα οπως // και ; (αν θυμαμαι καλα)

Οτιδηποτε γραφεται μετα απο αυτα (rem ,// ) αγνοειται απο το συστημα και εξηπηρετει μονο στο να θυμηθεις - εξηγησεις ενα κοματι κωδικα.

Yngwiedis
02-07-05, 11:44
Άλλος ένας κώδικας για random avatar...

<?php
$d = opendir('.');
$i=0;
while ($f = readdir($d))
(stristr($f,'jpg') || stristr($f,'gif') || stristr($f,'png')) ?
($a[] = $f) && ($i++) : 0;

srand ( (float) microtime() * 1010101975);
fpassthru (fopen ($a{rand(0, $i-1)}, "rb"));
closedir($d);
?>

Δημιουργείς ένα .php αρχείο με τον παρπάνω κώδικα μέσα και το βάζεις στο folder με τα avatars που θέλεις να δείχνει.
Είσαι έτοιμος ;)

GoofyX
02-07-05, 12:13
To filename που ανοίγει είναι εκεί που θα αποθηκεύσει την εικόνα; Γιατί όμως είναι .txt?Μέσα στο .txt filename αποθηκεύω απλά έναν αριθμό (1, 2, 3 ή 4). Διαβάζω τον αριθμό αυτό σε μια μεταβλητή και στον ίδιο κατάλογο υπάρχουν αντίστοιχα 4 αρχεία για avatar με την ονομασία image1.gif, image2.gif, κτλ. Κάθε φορά που διαβάζω τον αριθμό από το αρχείο, τον αυξάνω κατά ένα (μέχρι να ξεπεράσει το 4, οπότε γίνεται 1 πάλι) και τον αποθηκεύω στο αρχείο πάλι. Με αυτό τον τρόπο οι εικόνες εμφανίζονται όχι τυχαία, αλλά με round-robin σειρά (1 -> 2 -> 3 -> 4 -> 1 κ.ο.κ).

gramps... Μπερδεύτηκα λιγάκι :what: OK, αυτό το .php θα το ανεβάσω στο hosting μου μέσω FTP, πως θα το βάλω ως υπογραφή/avatar? Αυτά με το βελάκι // <----- δεν πολυκαταλαβαίνω τι κάνουν, μπορείτε να μου πείτε τι κάνει το καθένα; Δεν ξέρω σχεδόν καθόλου php...Αυτά με το βελάκι //<-- τα έβαλα επίτηδες για να μαρκάρω τις εντολές σε php που ουσιαστικά κάνουν τη δουλειά.

Voldemort
02-07-05, 16:39
ΟΚ, τα δοκίμασα αυτά, παίζουν κανονικά (Yngwiedis ξέχασες το header("Content-type: image/gif"); ;) )

Πως όμως θα τα βάλω ως άβαταρ/υπογραφή...; :what:

GoofyX
02-07-05, 20:06
Σε κάποια site (για παράδειγμα το adslgr.com δεν το υποστηρίζει) μπορείς για άβαταρ να βάλεις url, αντί για image, οπότε θα δώσεις το παραπάνω url σου που είναι μια php σελίδα (εννοείται ότι πρέπει να υπάρχει σε κάποιο web server με php στημμένο για να το εκτελέσει).

chatasos
03-07-05, 12:16
Σε κάποια site (για παράδειγμα το adslgr.com δεν το υποστηρίζει) μπορείς για άβαταρ να βάλεις url, αντί για image, οπότε θα δώσεις το παραπάνω url σου που είναι μια php σελίδα (εννοείται ότι πρέπει να υπάρχει σε κάποιο web server με php στημμένο για να το εκτελέσει).
Αν το url είναι κάποιο script και όχι κάποια εικόνα μπορεί να υπάρξουν security issues...οπότε συνήθως δεν επιτρέπεται...

Αν όμως έχεις πρόσβαση σε δικό σου Apache, μπορείς να το κάνει να "επεξεργάζεται" τα gif αρχεία σαν να είναι php αρχεία, βάζοντας στο .htaccess του σχετικού dir το παρακάτω:



<FilesMatch "^.*\.gif">
SetHandler application/x-httpd-php
</FilesMatch>


Οπότε βάζοντας "http://www.xxx.gr/file.gif" στο avatar σου θα εκτελείται το αντίστοιχο php script.

Voldemort
03-07-05, 22:05
Τα καταφεραααααα :yahoo:

chatasos, thanks man! :thumb_dup Ένα θενκς και στα παιδιά που βοήθησαν :clap :ork :dwarf

Yngwiedis
03-07-05, 22:14
ΟΚ, τα δοκίμασα αυτά, παίζουν κανονικά (Yngwiedis ξέχασες το header("Content-type: image/gif"); ;) )

Πως όμως θα τα βάλω ως άβαταρ/υπογραφή...; :what:
Εγώ το χρησιμοποιώ όπως είναι. Χωρίς να βάλω header η τίποτα άλλο.

Voldemort
03-07-05, 22:29
Άλλος ένας κώδικας για random avatar...

<?php
$d = opendir('.');
$i=0;
while ($f = readdir($d))
(stristr($f,'jpg') || stristr($f,'gif') || stristr($f,'png')) ?
($a[] = $f) && ($i++) : 0;

srand ( (float) microtime() * 1010101975);
fpassthru (fopen ($a{rand(0, $i-1)}, "rb"));
closedir($d);
?>

Δημιουργείς ένα .php αρχείο με τον παρπάνω κώδικα μέσα και το βάζεις στο folder με τα avatars που θέλεις να δείχνει.
Είσαι έτοιμος ;)

Χμμ... Μάλλον βιάστηκα να χαρώ.. Μερικές φορές δεν βγάζει τίποτα...

http://avalanche.scshost.co.uk/stuff/mpe/random_image.gif

GoofyX
04-07-05, 11:22
Χμμ... Μάλλον βιάστηκα να χαρώ.. Μερικές φορές δεν βγάζει τίποτα...

http://avalanche.scshost.co.uk/stuff/mpe/random_image.gifΤο δοκίμασα πάντως με Firefox εδώ και παίζει μια χαρά.

Yngwiedis
04-07-05, 11:50
Voldemort...
Εγώ χρησιμοποιώ τον κώδικα που σου έδωσα κάνοντας το εξής :
Δημιουργώ ένα νέο αρχείο .txt
Βάζω μέσα τον κώδικα.
Κάνω save.
Μετονομάζω το .txt σε .php ( παράδειγμα avatar.php ).
Το ανεβάζω στο folder με τα avatars που θέλω να δείχνει.
Από εκεί και πέρα στο profile μου στο forum δηλώνω σαν URL για το avatar το :
http://www.mydomain.com/foldername/avatar.php

Αυτά :)

@ ADSLgr.com All rights reserved.