Functie get first image in dir
Ik ben bezig met zelf een soort van mini-foto/video galerij te maken.
Alles is gelukt, enkel om bij het albumoverzicht elk album telkens de eerste foto van de folder te geven lukt niet.
Hier is mijn functie:
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
function getFirstImage($dir){
global $imageName;
$ext = array("jpg", "png", "jpeg", "gif", "JPG", "PNG", "GIF", "JPEG");
$i = 0;
if($handle = opendir('images/upload/images/'.$dir)) {
while(false!== ($file = readdir($handle))){
if(strstr($file, "." . $ext[$i])== '.' && strstr($file, "." . $ext[$i])== '..'){
$i++;
}else{
$imageName = $file;
break;
}
}
$imagePath = 'images/upload/images/'.$dir.'/'.$imageName;
closedir($handle);
}
return($imagePath);
}
?>
function getFirstImage($dir){
global $imageName;
$ext = array("jpg", "png", "jpeg", "gif", "JPG", "PNG", "GIF", "JPEG");
$i = 0;
if($handle = opendir('images/upload/images/'.$dir)) {
while(false!== ($file = readdir($handle))){
if(strstr($file, "." . $ext[$i])== '.' && strstr($file, "." . $ext[$i])== '..'){
$i++;
}else{
$imageName = $file;
break;
}
}
$imagePath = 'images/upload/images/'.$dir.'/'.$imageName;
closedir($handle);
}
return($imagePath);
}
?>
Het aanroepen van de functie:
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
24
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
if(!isset($_GET['dir'])){
$directories = scandir('images/upload/images');
$counter=0;
echo('<div class="albumRow">');
foreach($directories as $directory){
if($directory!=='.' and $directory!=='..' ){
if($counter == 4){
echo('</div><div class="albumRow">');
$counter=0;
}
$counter++;
$firstImage = getFirstImage($directory);
echo ('<div class="singleFolder"><a href="?dir='.$directory.'">
<img src="'.$firstImage.'" width="100" height="80" />
</a>
<span>'.$directory.'</span></div>');
}
}
?>
if(!isset($_GET['dir'])){
$directories = scandir('images/upload/images');
$counter=0;
echo('<div class="albumRow">');
foreach($directories as $directory){
if($directory!=='.' and $directory!=='..' ){
if($counter == 4){
echo('</div><div class="albumRow">');
$counter=0;
}
$counter++;
$firstImage = getFirstImage($directory);
echo ('<div class="singleFolder"><a href="?dir='.$directory.'">
<img src="'.$firstImage.'" width="100" height="80" />
</a>
<span>'.$directory.'</span></div>');
}
}
?>
Dimitri Van Reeth op 11/08/2012 15:07:02:
de eerste foto van de folder te geven lukt niet.
En wat versta jij onder de 1e foto?
De 1e die geüpload is?
De 1e die gemaakt is?
De eerste qua alfabet?
De eerste .....
En wat lukt er niet? Wordt er helemaal niets op gehaald? Komt het pad/de bestandsnaam niet (goed) door? Foutmelding(en)?
Deze regel vereenvoudigd:
if(strstr($file, ".jpg")== '.' && strstr($file, ".jpg")== '..'){
Nog simpeler:
if('iets' == '.' && 'iets' == '..'){
Eindconclusie:
if('.' == '..')(
De && (AND) gaat nooit werken.
Verder: Stel dat het werkt dan verhoog je $i om de volgende extensie te gaan bekijken en tevens haal je de volgende $file op. Oftewel het klopt totaal niet.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
function getFirstImage($dir)
{
// verkrijg alle foto's in map
$ext = array("jpg", "png", "jpeg", "gif", "JPG", "PNG", "GIF", "JPEG");
$files = glob('images/upload/images/'.$dir.'/*.{'.implode(",", $ext).'}');
// sorteer op datum (oudste eerst)
array_multisort(array_map( 'filemtime', $files ), SORT_NUMERIC, SORT_ASC, $files);
// via var... ik weet even niet welke precies van de 2: probeer zelf even
//$imagePath = 'images/upload/images/'.$dir.'/'.$files[0];
$imagePath = $files[0];
return($imagePath);
}
?>
function getFirstImage($dir)
{
// verkrijg alle foto's in map
$ext = array("jpg", "png", "jpeg", "gif", "JPG", "PNG", "GIF", "JPEG");
$files = glob('images/upload/images/'.$dir.'/*.{'.implode(",", $ext).'}');
// sorteer op datum (oudste eerst)
array_multisort(array_map( 'filemtime', $files ), SORT_NUMERIC, SORT_ASC, $files);
// via var... ik weet even niet welke precies van de 2: probeer zelf even
//$imagePath = 'images/upload/images/'.$dir.'/'.$files[0];
$imagePath = $files[0];
return($imagePath);
}
?>
@Eddy
Ik heb jouw functie zojuist geprobeerd, maar ik krijg deze foutmelding:
Notice: Undefined offset: 0 in C:\Users\Dimitri\Desktop\Website team-xs\root\photos.php on line 112
& lijn 112 is: $imagePath = 'images/upload/images/'.$dir.'/'.$files[0];
Ik had gisteren zelf nog deze functie geschreven:
Deze neemt wel gewoon echt het 1ste bestand van de folder. Maar in de folders komen toch alleen maar afbeeldingen te staan dus ik denk dat deze wel voldoet?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
function getFirstImage($dir){
$ext = array("jpg", "png", "jpeg", "gif", "JPG", "PNG", "GIF", "JPEG");
$firstimage = scandir('images/upload/images/'.$dir);
if (array_key_exists(2, $firstimage)) {
$firstimage = $firstimage[2];
$dot = strrpos($firstimage, '.');
$filename = substr($firstimage, 0, $dot);
$filetype = substr($firstimage, $dot+1);
if (array_search($filetype, $ext) !== false){
$imagePath = 'images/upload/images/'.$dir.'/'.$filename.".".$filetype;
}else{
$imagePath = 'style/default-folder.jpg';
}
}else{
$imagePath = 'style/default-folder.jpg';
}
return($imagePath);
}
?>
function getFirstImage($dir){
$ext = array("jpg", "png", "jpeg", "gif", "JPG", "PNG", "GIF", "JPEG");
$firstimage = scandir('images/upload/images/'.$dir);
if (array_key_exists(2, $firstimage)) {
$firstimage = $firstimage[2];
$dot = strrpos($firstimage, '.');
$filename = substr($firstimage, 0, $dot);
$filetype = substr($firstimage, $dot+1);
if (array_search($filetype, $ext) !== false){
$imagePath = 'images/upload/images/'.$dir.'/'.$filename.".".$filetype;
}else{
$imagePath = 'style/default-folder.jpg';
}
}else{
$imagePath = 'style/default-folder.jpg';
}
return($imagePath);
}
?>
Gewijzigd op 12/08/2012 12:46:02 door Dimitri Van Reeth