webForumDet fria alternativet

Visa bild med php?

12 svar · 1 188 visningar · startad av Ken

KenMedlem sedan mars 2004252 inlägg
#1

Kan nån hjälpa mig på traven hur man visar en aktuell bild med php?

PeddaMedlem sedan juni 20004 880 inlägg
#2

Du får nog förklara lite mer vad du menar.

KenMedlem sedan mars 2004252 inlägg
#3

Vad jag menar egentligen är att hur man visar bilder med php från t.ex en mapp.

PeddaMedlem sedan juni 20004 880 inlägg
#4

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\" />";
}
?>
FarbrorMedlem sedan dec. 200545 inlägg
#5

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?

PeddaMedlem sedan juni 20004 880 inlägg
#6
<?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.";
}

?>
FarbrorMedlem sedan dec. 200545 inlägg
#7

Fungerar inte riktigt. Html-koden som php-skriptet genererar blir:
<img src="datorer/108" />
Ser ut som om .jpg-ändelsen saknas efter filnamnet "108"...

PeeerMedlem sedan mars 20025 362 inlägg
#8

Ändra

$random_bild = array_rand($bilder, 1);

till

$random_bild = array_rand($bilder, 1) . '.jpg';
PeddaMedlem sedan juni 20004 880 inlägg
#9

Sorry, glömde det.

FarbrorMedlem sedan dec. 200545 inlägg
#10

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"...

PeddaMedlem sedan juni 20004 880 inlägg
#11

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.";
}
?>
KenMedlem sedan mars 2004252 inlägg
#12

Hur gör man på följande vis ifall man vill visa alla bilder i en mapp?

FarbrorMedlem sedan dec. 200545 inlägg
#13

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]>";
?>

Genererad på 385 ms · cache AV · v20260730165559-full.f96bc7eb