Kan nån hjälpa mig på traven hur man visar en aktuell bild med php?
Visa bild med php?
12 svar · 1 188 visningar · startad av Ken
Du får nog förklara lite mer vad du menar.
Vad jag menar egentligen är att hur man visar bilder med php från t.ex en mapp.
Här är ett exempel på hur du listar jpg bilder i en viss mapp.
Jag har inte testat skriptet då jag inte har php installerat på den här datorn, så jag kan ha gjort något fel.
<?php
$mapp = "bilder/"; // Du måste ha / efter mappnamnet
$bilder = array();
if ($dir = opendir($mapp)) {
while($file = readdir($dir)) {
if (ereg("[^1(.*)\.jpg$]",$file)) {
array_push($bilder,$file);
}
}
} else {
echo "Mappen $mapp kunde inte öppnas.";
}
foreach ($bilder as $bild) {
echo "<img src=\"$mapp$bild\" />";
}
?>
Det där skriptet visar alla jpg-bilderna som finns i mappen (vilket kan vara 100-tals). Om man bara vill visa en slumpmässigt vald bild då?
Jag har ett sånt slump-bild-php-skript själv förvisso, men det visar tyvärr alla filer i mappen, även htm-filer... enbart bilderna i mappen vore bra. Var får man tag i ett sånt skript?
<?php
$mapp = "bilder/"; // Du måste ha / efter mappnamnet
$bilder = array();
if ($dir = opendir($mapp)) {
while($file = readdir($dir)) {
if (ereg("[^1(.*)\.jpg$]",$file)) {
array_push($bilder,$file);
}
}
$random_bild = array_rand($bilder, 1);
echo "<img src=\"$mapp$random_bild\" />";
} else {
echo "Mappen $mapp kunde inte öppnas.";
}
?>
Fungerar inte riktigt. Html-koden som php-skriptet genererar blir:
<img src="datorer/108" />
Ser ut som om .jpg-ändelsen saknas efter filnamnet "108"...
Sorry, glömde det.
Jag ser nu att filnamnet är mer fel än jag tänkte på igår kvällst. Nu funkar det visserligen så att .jpg dyker upp, men själva filnamnet är rent "påhitt": Php-koden skapar:
<img src="datorer/234.jpg" />
Och det finns inga filer med enbart siffror i filnamnet i mappen "datorer"...
Farbror skrev:
Jag ser nu att filnamnet är mer fel än jag tänkte på igår kvällst. Nu funkar det visserligen så att .jpg dyker upp, men själva filnamnet är rent "påhitt": Php-koden skapar:
<img src="datorer/234.jpg" />
Och det finns inga filer med enbart siffror i filnamnet i mappen "datorer"...
Ok, verkar som array_rand gav fel resultat så vi kan köra shuffle istället för att krångla med den.
<?php
$mapp = "bilder/"; // Du måste ha / efter mappnamnet
$bilder = array();
if ($dir = opendir($mapp)) {
while($file = readdir($dir)) {
if (ereg("[^1(.*)\.jpg$]",$file)) {
array_push($bilder,$file);
}
}
shuffle($bilder);
echo "<img src=\"$mapp$bilder[0]\" />";
} else {
echo "Mappen $mapp kunde inte öppnas.";
}
?>
Hur gör man på följande vis ifall man vill visa alla bilder i en mapp?
Pedda, nu funkar skriptet fast nu visas alla filer mappen istället för endast gif och jpg.
T.ex. kan php-skriptets "output" bli: <img src="datorer/datorerbild130.htm" />
Jag har dock hittat skriptet nedan som verkar fungera, även om jag inte riktiga fattar skillnaden mellan $dir och $directory i början. Och om man vill öppna en slumpmässigt vald bild från någon av ett flertal kataloger?
<?php
$dir=opendir("datorer/");
//This is the directory route to the folder
$directory="datorer/";
//This is a relative link to the directory if it is not in the same directory as the file you are displaying the images on
$pattern="\.(gif|jpg|jpeg|png|bmp|swf)$";
if(!$dir)
{
die("Failed to read directory");
}
$s=readdir($dir);
$count="0";
$image;
while($s)
{
if(ereg($pattern, $s))
{
$image[$count]=$s;
$count++;
}
$s=readdir($dir);
}
closedir($dir);
//Spit it out
$limit=count($image);
$limit--;
$randNum=rand(0,$limit);
$size=getimagesize("$directory$image[$randNum]");
echo "<br><img src=\"$directory$image[$randNum]\" $size[3]>";
?>