Nieuwste afbeelding uit directory halen.
Ik heb zelf geen verstand van PHP dus moet ik alles op het www zoeken.
Ik wil het nieuwste plaatje wat in een directory geplaatst wordt (door mijn webcam) er uit halen.
Ik heb een script gevonden wat werkt, alleen pakt die het oudste plaatje.
Quote:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
$images = glob('*.{gif,png,jpg,jpeg}', GLOB_BRACE); //formats to look for
$num_of_files = 1; //number of images to display
foreach($images as $image)
{
$num_of_files--;
if($num_of_files > -1) //this made me laugh when I wrote it
echo "<b>".$image."</b><br>Created on ".date('D, d M y H:i:s', filemtime($image)) ."<br><img src="."'".$image."'"."><br><br>" ; //display images
else
break;
}
?>
$images = glob('*.{gif,png,jpg,jpeg}', GLOB_BRACE); //formats to look for
$num_of_files = 1; //number of images to display
foreach($images as $image)
{
$num_of_files--;
if($num_of_files > -1) //this made me laugh when I wrote it
echo "<b>".$image."</b><br>Created on ".date('D, d M y H:i:s', filemtime($image)) ."<br><img src="."'".$image."'"."><br><br>" ; //display images
else
break;
}
?>
Hopelijk mag ik deze vraag hier stellen, want dat is mij niet helemaal duidelijk als ik de regels lees?
Alvast bedankt voor de hulp
In $latest_image staat de src van de afbeelding.
In $time_created[$latest_image] de tijd waarop deze als laatste is aangepast.
Het zou kunnen dat de laatste regel korter kan maar ik kom er effe niet op.
EDIT: Er zat een fout in de laatste regel.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
# Afbeeldingen opvragen.
$images = glob('*.{gif,png,jpg,jpeg}', GLOB_BRACE);
# Voor het opslaan van de tijden waarop de afbeeldingen voor het laatst zijn aangepast.
$time_created = array();
# Alle afbeeldingen doorlopen en de tijd waarop de afbeelding voor het laats is aangepast opslaan.
foreach($images as $img) $time_created[$img] = filemtime($img);
# De laatste afbeelding zoeken.
$latest_image = array_search(max($time_created), $time_created);
?>
# Afbeeldingen opvragen.
$images = glob('*.{gif,png,jpg,jpeg}', GLOB_BRACE);
# Voor het opslaan van de tijden waarop de afbeeldingen voor het laatst zijn aangepast.
$time_created = array();
# Alle afbeeldingen doorlopen en de tijd waarop de afbeelding voor het laats is aangepast opslaan.
foreach($images as $img) $time_created[$img] = filemtime($img);
# De laatste afbeelding zoeken.
$latest_image = array_search(max($time_created), $time_created);
?>
Gewijzigd op 09/01/2011 11:39:00 door - Mark -
We komen in de buurt, maar hij pakt nu het eerste plaatje van vandaag.
Onder de afbeelding een lijst van de plaatjes de nieuwste onderaan.
Gewijzigd op 09/01/2011 12:44:08 door - Mark -
EDIT:
Opgezocht, volgens mij usort($time_created)
Gewijzigd op 09/01/2011 12:41:17 door Tobias Tobias
Er zitten geen dubbele tussen
Geen dubbele tijden? Dan loop ik vast helaas. Als de tijden uniek zijn dan zou hij in theorie de laatste afbeelding moeten weergeven.
@ Tobias, waar zou ik die usort dan moeten plaatsen?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
$imagesdir = 'images';
$images = glob($imagesdir.'/*.{gif,png,jpg,jpeg,bmp}', GLOB_BRACE);
foreach($images as $image) {
if( count($images) == 1 ) {
if( substr( filemtime($image), 0, 6 ) == substr( time(), 0, 6 ) ) {
echo $image."<br>\n";
} else {
echo $image."<br>\n";
}
} else {
echo $images[0]."<br>\n";
}
}
?>
$imagesdir = 'images';
$images = glob($imagesdir.'/*.{gif,png,jpg,jpeg,bmp}', GLOB_BRACE);
foreach($images as $image) {
if( count($images) == 1 ) {
if( substr( filemtime($image), 0, 6 ) == substr( time(), 0, 6 ) ) {
echo $image."<br>\n";
} else {
echo $image."<br>\n";
}
} else {
echo $images[0]."<br>\n";
}
}
?>
Gewijzigd op 09/01/2011 13:19:56 door Maarten PHP
Jan Bakker op 09/01/2011 13:03:30:
In ieder geval bedankt Mark
@ Tobias, waar zou ik die usort dan moeten plaatsen?
@ Tobias, waar zou ik die usort dan moeten plaatsen?
Direct na de foreach
Met deze code krijg ik een blanco pagina?
Jan Bakker op 09/01/2011 13:22:42:
Met deze code krijg ik een blanco pagina?
moet je een map images aanmaken en daarin je images foto's dus
of de variable aanpassen $imagesdir
Gewijzigd op 09/01/2011 13:30:02 door Maarten PHP
Ik heb het zo gedaan, maar krijg dan een waarschuwing
Quote:
Warning: Wrong parameter count for usort() in /home/realit/public_html/webcam/webcam7.php on line 40
Jan Bakker op 09/01/2011 13:30:32:
@ Tobias
Ik heb het zo gedaan, maar krijg dan een waarschuwing
Warning: Wrong parameter count for usort() in /home/realit/public_html/webcam/webcam7.php on line 40
Ik heb het zo gedaan, maar krijg dan een waarschuwing
Quote:
Warning: Wrong parameter count for usort() in /home/realit/public_html/webcam/webcam7.php on line 40
weet je wel hoe de functie usort werkt?
kijkje op php.net/usort
Gewijzigd op 09/01/2011 13:32:19 door Maarten PHP
Dat heb ik gedaan $imagesdir = 'webcam';
Jan Bakker op 09/01/2011 13:32:14:
@ PHPer PHPer
Dat heb ik gedaan $imagesdir = 'webcam';
Dat heb ik gedaan $imagesdir = 'webcam';
en toont hij de foto's van de map webcam
Gewijzigd op 09/01/2011 13:53:23 door Maarten PHP
Maar zoals ik al aangaf, ik heb totaal geen verstand van PHP
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
$imagesdir = 'images';
$imagesdirlength = strlen($imagesdir) + 1;
$images = glob( $imagesdir.'/*.{gif,png,jpg,jpeg,bmp}', GLOB_BRACE );
foreach($images as $image) {
if( count($images) == 1 ) {
if( substr( filemtime($image), 0, 6 ) == substr( time(), 0, 6 ) ) {
echo "<img src=\"".$image."\" alt=\"".substr( $image, $imagesdirlength, strlen( $image ) )."\" title=\"".substr( $image, $imagesdirlength, strlen( $image ) )."\" border=\"0\"><br>\n";
} else {
echo "<img src=\"".$image."\" alt=\"".substr( $image, $imagesdirlength, strlen( $image ) )."\" title=\"".substr( $image, $imagesdirlength, strlen( $image ) )."\" border=\"0\"><br>\n";
}
} else {
echo "<img src=\"".$images[0]."\" alt=\"".substr( $images[0], $imagesdirlength, strlen( $image ) )."\" title=\"".substr( $images[0], $imagesdirlength, strlen( $images[0] ) )."\" border=\"0\"><br>\n";
}
}
?>
$imagesdir = 'images';
$imagesdirlength = strlen($imagesdir) + 1;
$images = glob( $imagesdir.'/*.{gif,png,jpg,jpeg,bmp}', GLOB_BRACE );
foreach($images as $image) {
if( count($images) == 1 ) {
if( substr( filemtime($image), 0, 6 ) == substr( time(), 0, 6 ) ) {
echo "<img src=\"".$image."\" alt=\"".substr( $image, $imagesdirlength, strlen( $image ) )."\" title=\"".substr( $image, $imagesdirlength, strlen( $image ) )."\" border=\"0\"><br>\n";
} else {
echo "<img src=\"".$image."\" alt=\"".substr( $image, $imagesdirlength, strlen( $image ) )."\" title=\"".substr( $image, $imagesdirlength, strlen( $image ) )."\" border=\"0\"><br>\n";
}
} else {
echo "<img src=\"".$images[0]."\" alt=\"".substr( $images[0], $imagesdirlength, strlen( $image ) )."\" title=\"".substr( $images[0], $imagesdirlength, strlen( $images[0] ) )."\" border=\"0\"><br>\n";
}
}
?>
deze code is veel stukken beter zie het misschien moeilijk uit maar als je het goede map-naam opgeeft doet hij het perfect en dit voorbeeld laat gelijk de images zien in de plaats wat lijkt op een webaddres
het lijkt erop dat dit werkt, kom later nog terug.