PHP Classes

File: example5.php

Recommend this page to a friend!
  Classes of Colin McKinnon   pfpFileTree   example5.php   Download  
File: example5.php
Role: Example script
Content type: text/plain
Description: example
Class: pfpFileTree
Manipulates files in directories recursively
Author: By
Last change:
Date: 13 years ago
Size: 1,678 bytes
 

Contents

Class file image Download
<?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;
}