<?php
/**  
*    Name:
*        thumbJPEG
*
*    Author:
*       Etienne <Etilem> LEMEE (from FRANCE)
*       gpgkey: <http://www.etilem.net/key/current>
*
*    Description:
*        generate cached thumbnail from JPEG filename resampled to 0-100 percent
*        of the original size
*
*    Usage: 
*      <?php
*        require("thumbJPEG.php");          // resize 'any_file.jpg' to 15%
*        new thumbJPEG("any_file.jpg", 15); // and output JPEG thumbnail
*      ?>
*
*    Released:
*        Sun Feb 24 11:02:16 CET 2008
*
*    Updated:
*        Tue Jul 14 13:37:44 CEST 2009
*
*    Copyright:
*       this piece of code is free software: you can redistribute it and/or
*       modify it under the terms of the GNU General Public License as published
*       by the Free Software Foundation, either version 3 of the License, or
*       (at your option) any later version.
*
*       this piece of code is distributed in the hope that it will be useful,
*       but WITHOUT ANY WARRANTY; without even the implied warranty of
*       MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
*       General Public License for more details.
*
*       You should have received a copy of the GNU General Public License along
*       with this piece of code. If not, see <http://www.gnu.org/licenses/>.
*
**/

class thumbJPEG {

    var 
$im;
    var 
$file;
    var 
$coef;
    var 
$hash;
    var 
$cfile;
    var 
$cdir;
    var 
$err;

    function 
__construct ($fn$c) {
        
$this->file     $fn;
        
$this->coef     $c $c 100 1;
        
$this->hash     md5 (sprintf ("file:%s:coef:%s"md5_file ($this->file), $this->coef));
        
$this->cdir     "/home/scripts/php_include/thumbJPEG";
        
$this->cfile    sprintf ("%s/%s"$this->cdir$this->hash);
        
$this->err      = array (
            
libgd => base64_decode ("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"),
            
thumb => base64_decode ("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")
        );
        
error_reporting (0);
        
header ("Content-Type: image/jpeg");
        if ( !
function_exists ("imagejpeg") ) die ($this->err['libgd']);
        if ( !
file_exists ($this->cfile) ) {
            
file_exists ($this->cdir) or mkdir ($this->cdir);
            list (
$w$h)   = getimagesize ($this->file);
            
$nw             $w $this->coef;
            
$nh             $h $this->coef;
            
$orig           imagecreatefromjpeg ($this->file);
            
$dest           imagecreatetruecolor ($nw$nh);
            
imagecopyresampled ($dest$orig0000$nw$nh$w$h);
            
imagejpeg ($this->im $dest$this->cfile) or die ($this->err['thumb']);
        } else 
$this->im imagecreatefromjpeg ($this->cfile) or die ($this->err['thumb']);
        return 
imagejpeg ($this->im);
    }
}
?>