Nieuwste afbeelding uit directory halen.
Hallo allemaal, ik ben opzoek naar wat hulp en hoop dat hier te krijgen.
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.
Hopelijk mag ik deze vraag hier stellen, want dat is mij niet helemaal duidelijk als ik de regels lees?
Alvast bedankt voor de hulp
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
Uit het hoofd dus niet getest.
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.
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.
Zet er eens het volgende onder. Wat krijg je dan te zien?
Onder de afbeelding een lijst van de plaatjes de nieuwste onderaan.
Het gaat me om de tijden die erachter staan. Zitten daar dubbele tussen of zijn ze uniek?
Gewijzigd op 09/01/2011 12:44:08 door - Mark -
kun je geen (u)sort oid erin gooien, ik weet alleen niet hoe je dat op datum/tijd doet, alleen op naam.
EDIT:
Opgezocht, volgens mij usort($time_created)
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.
In ieder geval bedankt Mark
@ Tobias, waar zou ik die usort dan moeten plaatsen?
@ Tobias, waar zou ik die usort dan moeten plaatsen?
Ik zou het ongeveer zo doen:
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
@ 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
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
@ PHPer PHPer
Dat heb ik gedaan $imagesdir = 'webcam';
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
Nee hij toont geen foto's en ik zal eerst eens lezen over die usort.
Maar zoals ik al aangaf, ik heb totaal geen verstand van PHP
Maar zoals ik al aangaf, ik heb totaal geen verstand van PHP
je kan ook een tutorial volgen over 'html inside echo' dat betekent 'html in echo' en dan of je allen nog zoiets als html image-tag toe tevoegen in je echo, snap je het niet:
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
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.




