<?php 
 
/** 
 * example5.php 
 * 
 * apply a callback function to all the files in a tree  
 * this example creates thumbnails for every jpeg image (which doesn't 
 * already have one) 
 */ 
 
require_once('pfpFileTree.inc.php'); 
 
$src='/var/www/html/'; 
 
$t=new pfpFileTree($src); 
 
$t->readTree(array('name'=>'{*.jpg,*.jpeg}','type'=>'f','r'=>true)); 
$t->applyCallBack('cb',null); 
$t->readTree(array('name'=>'{*.jpg,*.jpeg}','type'=>'f','r'=>true)); 
 
$t->ls(); 
 
function cb($filename, $attrs, $additional) 
{ 
    // create a directory called thumbnails in every 
    // directory - and populate with smaller verions 
    // of the jpeg files 
    $size=128; 
    $currentdir=dirname($filename); 
    if (basename($currentdir)!='thumbnails') { 
        // because we don't want to make thumbnails of the thumbnails! 
        if (!is_dir($currentdir . '/thumbnails')) { 
            if (!mkdir($currentdir . '/thumbnails')) { 
                // returning false wold halt progress 
                print "unable to create thumbnails in $currentdir\n"; 
                return true; 
            } 
        } else { 
            if (filemtime($filename) 
                <filemtime($currentdir . '/thumbnails/' . basename($filename))) { 
                // thumbnail is newer 
                return true; 
            } 
        } 
        list($width, $height) = getimagesize($filename); 
        $divisor=max($width/$size, $height/$size); 
        if ($divisor<1) $divisor=1; 
        $img=imagecreatefromjpeg($filename); 
        $thumb=imagecreatetruecolor( 
            (integer)($width/$divisor), (integer)($height/$divisor)); 
        imagecopyresampled($thumb, $img,  
            0, 0, 0, 0,  
            (integer)($width/$divisor),(integer)($height/$divisor),  
            $width, $height); 
        imagejpeg($thumb, $currentdir . '/thumbnails/' . basename($filename)); 
        imagedestroy($thumb); 
        imagedestroy($img); 
    } 
    return true; 
} 
 
 |