i was wondering if it’s possible to filter my image collection by the built in exif data to display images which are taken between a certain hour of the day.
the same question applies to create some sort of foreach loop to somewhat identify my collection and sort them in several collections to pass a time table such as:
- 19:00 to 20:00 ( count how many pictures fit this time )
- 20:00 to 21:00 ( count )
- 21:00 to 22:00 ( count )
to basically automate the most out of my collection.
You can use the $file->exif()
method. Filtering should work with a filter with callback.
I’ve sorted out the list to count for each hour which i solved like this:
<?php foreach($studio->images() as $image): ?>
<?php if($date = $image->exif()->data()['DateTimeOriginal']): ?>
<?php $values[] = date('H',strtotime($date)); ?>
<?php endif ?>
<?php endforeach ?>
<?php foreach(array_count_values($values) as $hours => $value): ?>
.......
<?php echo $hours ?>
<?php echo $value; ?>
<?php endforeach ?>
Just need to work on on the filter to display only between certain hours.
Edit: A few moments later…
if($zeit = param('zeit')){
$list = new Collection();
$i = 0;foreach($page->images() as $image){
if(date('H',strtotime($image->exif()->data()['DateTimeOriginal'])) == $zeit){
$list->append($i,$image);
}
$i++;
}
$list = $list->paginate(50);
}
that’s working for me to get a certain collection based on the current hour.