Jump to content


Extract photos from directory based filename criteria

  • Please log in to reply
1 reply to this topic

#1 jwheatley

  • New Members
  • Pip
  • Newbie
  • 1 posts

Posted 23 January 2013 - 08:19 PM

Oh Joy! Another PHP noob with novice OOP skills looking for help! Ha.

I want to thank anyone in advanced for their help. I'm trying to avoid creating a separate image gallery for some 3000 intersections and move this old approach into a template. I've gone through the documentation to try and pull this together myself with mild success, but no luck. My code is below but is probably a jumbled mess.

We have a directory of some 20,000 photographs (.jpg). They are countywide photos of road intersections. Each intersection can have several (varying count) “sections” and each section can have multiple photos (also varying count). The photos have been named with the following convention - ID_SEC_IMG#, where: ID = numeric identifier that identifies the image as belonging to a particular intersection. Within the intersection, it is then broken into multiple sections (potential of 12 unique sections within each intersection). Each section then can have multiple photos. So the folder may look like this…

117_1_1.jpg where 117=intersection ID; 1=Section #; 1=Image #

What we need to do is:
1. Find all photos in the folder that belong to a particular intersection ID that will be pass into a $sigID (117) variable via an <a> link on a separate page;
2. Of those photos, read out the Section # and display all photos with Section #1 in <div class=”s1”>; all photos with Section #2 in <div class=”s2”>; and so on.
3. Then ensure to iterate (and echo) all images that match the first 2 criteria to ensure a complete dump of all photos for the intersection within the proper div based on section.

Resulting in markup as follows:

<div class=”s1”><img src=”117_1_1.jpg” /><img src=”117_1_2.jpg” /><img src=”117_1_3.jpg” /></div>
<div class=”s2”><img src=”117_2_1.jpg” /></div>
…and so on.

I feel like Im close.

Again I appreciate your help with all of this. I’m still learning PHP and trying to strengthen my OOP skills. I feel like I understand what I need to accomplish, I’m just lacking the wherewithal to make it happen.

$sigID= 117;
$myPicFolder = "../photos/";
$thePics = array();
if (is_dir($myPicFolder)) {
if ($dh = opendir($myPicFolder)) {
while (($file = readdir($dh)) !== false) {
	 list($pictureID,$quadID)=explode('_',$file);//Seperates the parts of the name for easier access
	 //check if the ID is already a key in $thePics
	 //Add the new ID if it does not exist with an empty array.
	 // Add a new part to the ID since each picture ID has 4 pictures.
	 $thePics[$pictureID][$quadID] = $file;

//Cycle through the pictures...
foreach($thePics as $pictureID=>$quad){
if($pictureID == $sigID){
//echo '<div class="quad">';
foreach($quad as $quadPart=>$pictureSRC){
echo '<img src="'.$myPicFolder.$pictureSRC.'"/>';
//echo '</div>';

Edited by jwheatley, 23 January 2013 - 08:20 PM.

#2 requinix

  • Administrators
  • Lazy Administrator
  • 9,373 posts
  • LocationWA

Posted 23 January 2013 - 09:32 PM

#1. glob
$files = glob("/path/to/images/117_*_*.jpg");
#2. basename and explode
// $filename = "/path/to/images/117_1_1.jpg";
list($intersection, $section, $image) = explode("_", basename($filename, ".jpg"));

The Reimann Zeta Function Trolley Problem | "Summer is when I, the great ice fairy, can show my true power!"

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users