Gå til innhold

Skript som bytter ut bildet i tilfeldig rekkefølge


Anbefalte innlegg

Vær hilset.

 

Lar det seg gjøre å bruke et PHP-skript for å "bytte om" på et bilde? Jeg mener ikke slik at forskjellige bilder lastes ved hjelp av at skriptet som bytter filnavn i HTML. Jeg mener slik at jeg f.eks har adressen "http://host.com/bilde.gif" gir et forskjellig bilde (i tilfeldig rekkefølge?) for hver gang den lastes? Bildene bør kunne velges ut av en mappe.

 

Finnes det noe slikt pre-produsert, eventuellt hvor får jeg tak i det?

 

Takker for hjelpen. :)

Lenke til kommentar
Videoannonse
Annonse
et script som velger et tilfeldig bilde i en mappe, renamer det til bilde.gif og viser det, er ikke særlig kjapt gitt. en hel del renaming av bilder må til, og det tar så vidt jeg vet tid :)

Jeg tror nok ikke det nødvendigvis må rename. Scriptet vil sende den-og-den infoen fra server, bare under et ebstemt navn. Jeg har sett lignende script i aksjon før også, men det var noe galt med linkene jeg til slitt fant.

Lenke til kommentar

Kan du ikke fysisk skrive inn en fil med php ending?

Eller bestemmes det bare ut i fra content-type.

Går fint å lage et php skript som sender content type image/noe og så printer ut et bilde, så det funker akkurat som et bilde.

Om det går er det null problem og velge et tilfeldig bilde fra en mappe.

 

Om du må ha jpg filending kan du bytte ut bildet og rename og greier, men da må noe kalle php filen.

 

Eller så er det vell kanskje mulig og trikse til i apache og php innstillinger for å få jpg filer til å bli behandlet som php filer og ta det derfra.

 

Og hva er "kjapt som fy" ?

Lenke til kommentar
Kan du ikke fysisk skrive inn en fil med php ending?

Nei, det skal brukes til å bytte på avatarer på et forum *host*, så kun gif. png. og jpg. er lov. Serverside kan IKKE inkluderes direkte, med andre ord.

 

Eller bestemmes det bare ut i fra content-type.

Går fint å lage et php skript som sender content type image/noe og så printer ut et bilde, så det funker akkurat som et bilde.

 

Les over.

 

Om du må ha jpg filending kan du bytte ut bildet og rename og greier, men da må noe kalle php filen.

 

Poenget blir vel at serveren selv må eksekvere PHP-scriptet om et visst bilde lastes ned.

 

Og hva er "kjapt som fy" ?

 

Slik at man i praksis slipper å vente.

Lenke til kommentar

Jeg har et GENIALT avatarscript liggende som lar serveren parse en fil med .jpg-endelse som et PHP-script (scriptet heter avatar.jpg og funker fett i forumet), mens det egentlig er et PHP-script som returnerer et jpg-bilde ettersom en bruker spør etter filen. *finne frem* :D

 

Edit: 666 innlegg :devil:

Endret av lokaltog
Lenke til kommentar

Fremgangsmåte:

 

Det er lurt å legge scriptet i en egen mappe på serveren slik at ikke alle jpg-filer parses som PHP. Lag en mappe som heter avatar på serveren og legg en .htaccess-fil med følgende informasjon der:

AddType application/x-httpd-php .jpg

 

Så lager du et PHP-script etter din smak som kanskje returnerer forskjellig avatar for hver gang scriptet kjøres. Scriptet kaller du avatar.jpg, og legger i samme mappe som .htaccess-fila. Åpne avatar.jpg og skriv inn koden. For eksempel brukte jeg denne koden for å printe tidspunkt og dato i avataren min for en stund siden:

<?php
setlocale(LC_ALL, 'no_NO', 'nor_nor');

header("Cache-Control: public, max-age=3600");
header("Content-Type: image/jpeg"); 

$file	= "avatar.png";
$time	= time() + 21600;

$image	= imagecreatefrompng($file);
$color	= imagecolorallocate($image, 220, 220, 220);

$box	= imagettfbbox(13, 0, "gothicb.ttf", strftime("%H:%M", $time));
$x_l	= min($box[0], $box[6]);
$x_r	= max($box[2], $box[4]);
$x_w	= $x_r - $x_l;
$x  = ceil((80 - $x_w) / 2);
imagettftext($image, 13, 0, $x, 16, $color, "gothicb.ttf", strftime("%H:%M", $time));

$box	= imagettfbbox(10, 0, "gothic.ttf", ucwords(strftime("%A", $time)));
$x_l	= min($box[0], $box[6]);
$x_r	= max($box[2], $box[4]);
$x_w	= $x_r - $x_l;
$x  = ceil((80 - $x_w) / 2);
imagettftext($image, 10, 0, $x, 28, $color, "gothic.ttf", ucwords(strftime("%A", $time)));

imagejpeg($image, NULL, 92);
?>

 

Legg merke til de to headerene som sendes i toppen av dokumentet - DEN 2. HEADEREN ER VIKTIG! Den forteller nettleseren at dataene som sendes er i jpeg-format.

Husk å sjekke at filen som returneres er mindre enn 6kB (ved å lagre og sjekke filstørrelse).

 

 

@HalTan: Hva vil du at scriptet skal gjøre? Skriver det mer enn gjerne for deg! :thumbup:

Lenke til kommentar

Oi, viste ikke at man kunne skrive det der i en htaccess fil =)

Rått.

 

Har forresten det lille jeg har skrevet, litt småtungvint, men det velger jo random :p

<?php
header('Content-type: image/jpeg');
$rand = rand(1,10);
$im = imagecreatefromjpeg('bilder/'.$rand.'.jpg'); 
Imagejpeg($im,'',100); 
ImageDestroy($im);
?>

Henter ut fra mappen "bilder" der navna bare er 1.jpg og opp til 10.jpg, bare å bytte det siste tallet i rand hvis du vil ha fler/mindre.

 

Ja, tungvint, men det er raskt :p

Lenke til kommentar

EY! :) Jeg vil at scriptet skal tilfeldig velge ett bilde jeg legger i en bestemt mappe, og laste det opp ved request, slik at jeg på èn forumside f.eks kan ha 3-4 avatarere nedover, forskjellige i hver post.

 

Hadde vært SUPERT om du fiksa det. Kall bildet for "avatar.gif".

Endret av HalTan
Lenke til kommentar
EY! :) Jeg vil at scriptet skal tilfeldig velge ett bilde jeg legger i en bestemt mappe, og laste det opp ved request, slik at jeg på èn forumside f.eks kan ha 3-4 avatarere nedover, forskjellige i hver post.

 

Hadde vært SUPERT om du fiksa det. Kall bildet for "avatar.gif".

Høres ut som et fancy prosjekt, men tror det er umulig å gjennomføre det du spør

om i praksis. Det er fordi nettleseren cacher "avatar.gif" for den ene siden det

vises på, og bildet vil være det samme over hele siden. Tror ikke det finnes en

form for cache-control som tillater bildet å bli forespurt flere ganger i et dokument.

 

Forestill deg, nettleseren henter et bilde "avatar.gif" fra din server. Den henter det

bildet og renderer det bildet i alle img-tagger som spør etter akkurat det bildet.

Hvis du da oppdaterer dokumentet vil browseren sende en ny request, og bildet

kan bli oppdatert igjen.

 

Men om det er ok med en avatar som skifter per side som vises / per request, kan

jeg gjerne lage et slikt script til deg. :)

Endret av lokaltog
Lenke til kommentar

/avatar/.htaccess

AddType application/x-httpd-php .jpg

 

/avatar/avatar.jpg

<?php
header('Content-Type: image/jpeg'); // Definerer innholdstype
header('Cache-Control: no-cache'); // Gjør at nettleseren sender ny request for hver side

$bilder = array(
'bilde1.jpg', 'bilde2.jpg', 'bilde3.jpg'
); // Funker kun med jpg-filer! Legg til så mange du vil her.

$rnd = round(rand(0, count($bilder) - 1)); // Lager nummer

$im = imagecreatefromjpeg($bilder[$rnd]); // Lager bilderessurs
imagejpeg($im, NULL, 90); // Siste tall er jpeg-kvaliteten!
imagedestroy($im); // Frigjør ressurser
?>

 

:thumbup:

 

Si ifra om det oppstår noen uventede bugs.

Endret av lokaltog
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...