Esempio n. 1
0
function spit_phpthumb_image($filepath, $configarray = array())
{
    // set up class
    global $CFG, $PHPTHUMB_CONFIG;
    $phpThumb = new phpThumb();
    // import default config
    if (!empty($PHPTHUMB_CONFIG)) {
        foreach ($PHPTHUMB_CONFIG as $key => $value) {
            $keyname = 'config_' . $key;
            $phpThumb->setParameter($keyname, $value);
        }
    }
    // import passed params
    if (!empty($configarray)) {
        foreach ($configarray as $key => $value) {
            $keyname = $key;
            $phpThumb->setParameter($keyname, $value);
        }
    }
    $phpThumb->setSourceFilename($filepath);
    if (!is_file($phpThumb->sourceFilename) && !phpthumb_functions::gd_version()) {
        if (!headers_sent()) {
            // base64-encoded error image in GIF format
            $ERROR_NOGD = 'R0lGODlhIAAgALMAAAAAABQUFCQkJDY2NkZGRldXV2ZmZnJycoaGhpSUlKWlpbe3t8XFxdXV1eTk5P7+/iwAAAAAIAAgAAAE/vDJSau9WILtTAACUinDNijZtAHfCojS4W5H+qxD8xibIDE9h0OwWaRWDIljJSkUJYsN4bihMB8th3IToAKs1VtYM75cyV8sZ8vygtOE5yMKmGbO4jRdICQCjHdlZzwzNW4qZSQmKDaNjhUMBX4BBAlmMywFSRWEmAI6b5gAlhNxokGhooAIK5o/pi9vEw4Lfj4OLTAUpj6IabMtCwlSFw0DCKBoFqwAB04AjI54PyZ+yY3TD0ss2YcVmN/gvpcu4TOyFivWqYJlbAHPpOntvxNAACcmGHjZzAZqzSzcq5fNjxFmAFw9iFRunD1epU6tsIPmFCAJnWYE0FURk7wJDA0MTKpEzoWAAskiAAA7';
            header('Content-Type: image/gif');
            echo base64_decode($ERROR_NOGD);
        } else {
            echo '*** ERROR: No PHP-GD support available ***';
        }
        exit;
    }
    $phpThumb->SetCacheFilename();
    if (!file_exists($phpThumb->cache_filename) && is_writable(dirname($phpThumb->cache_filename))) {
        //         error_log("generating to cache: " . $phpThumb->cache_filename);
        $phpThumb->CleanUpCacheDirectory();
        $phpThumb->GenerateThumbnail();
        $phpThumb->RenderToFile($phpThumb->cache_filename);
    }
    if (is_file($phpThumb->cache_filename)) {
        //         error_log("sending from cache: " . $phpThumb->cache_filename);
        if ($getimagesize = @GetImageSize($phpThumb->cache_filename)) {
            $mimetype = phpthumb_functions::ImageTypeToMIMEtype($getimagesize[2]);
        }
        spitfile_with_mtime_check($phpThumb->cache_filename, $mimetype);
    } else {
        //         error_log("phpthumb cache file doesn't exist: " . $phpThumb->cache_filename);
        $phpThumb->GenerateThumbnail();
        $phpThumb->OutputThumbnail();
        exit;
    }
}
Esempio n. 2
0
        if ($getimagesize = @GetImageSize($phpThumb->cache_filename)) {
            header('Content-Type: ' . phpthumb_functions::ImageTypeToMIMEtype($getimagesize[2]));
        } elseif (preg_match('/\\.ico$/i', $phpThumb->cache_filename)) {
            header('Content-Type: image/x-icon');
        }
        if (!@$PHPTHUMB_CONFIG['cache_force_passthru'] && preg_match('/^' . preg_quote($nice_docroot) . '(.*)$/', $nice_cachefile, $matches)) {
            header('Location: ' . dirname($matches[1]) . '/' . urlencode(basename($matches[1])));
        } else {
            @readfile($phpThumb->cache_filename);
        }
        exit;
    }
    return true;
}
// check to see if file already exists in cache, and output it with no processing if it does
$phpThumb->SetCacheFilename();
if (@is_file($phpThumb->cache_filename)) {
    RedirectToCachedFile();
} else {
    $phpThumb->DebugMessage('Cached file "' . $phpThumb->cache_filename . '" does not exist, processing as normal', __FILE__, __LINE__);
}
////////////////////////////////////////////////////////////////
// Debug output, to try and help me diagnose problems
$phpThumb->DebugTimingMessage('phpThumbDebug[6]', __FILE__, __LINE__);
if (@$_GET['phpThumbDebug'] == '6') {
    $phpThumb->phpThumbDebug();
}
////////////////////////////////////////////////////////////////
if ($phpThumb->rawImageData) {
    // great
} elseif (@$_GET['new']) {
 /**
  *	This function will do the actual work of creating a thumbnail image.
  *
  *	@param $width	The maximum width of the thumbnail.
  *	@param $height	The maximum height of the thumbnail.
  *	@param $cache	(optional) Indicate if the thumbnails should be cached. By default, caching is turned off.
  *
  *	@internal
  */
 function &_createThumbnail($width, $height, $cache = true)
 {
     // Check if the GD library is loaded.
     if (!extension_loaded('gd')) {
         $this->_error('YD_gd_not_installed');
     }
     // Include phpThumb
     YDInclude('phpThumb/phpthumb.class.php');
     // Create a new thumbnail object
     $thumb = new phpThumb();
     $thumb->src = $this->getAbsolutePath();
     // Set the options for the creation of thumbnails
     $thumb->config_nohotlink_enabled = false;
     $thumb->config_cache_directory = YD_DIR_TEMP;
     // Set the width and the height
     $thumb->w = $width;
     $thumb->h = $height;
     // Create the cached thumbnail
     //$cacheFName = $thumb->GenerateCachedFilename();
     $cacheFName = $thumb->SetCacheFilename();
     $cacheFName .= $this->getLastModified();
     $cacheFName .= $this->getAbsolutePath();
     $cacheFName = YD_TMP_PRE . 'N_' . md5($cacheFName) . '.tmn';
     $cacheFName = YD_DIR_TEMP . '/' . $cacheFName;
     // Check if caching is enabled
     if ($cache == true) {
         // Output the cached version if any
         if (is_file($cacheFName)) {
             $img = new YDFSImage($cacheFName);
             header('Content-type: ' . $img->getMimeType());
             echo $img->getContents();
             die;
         }
     }
     // Width should be positive integer
     if ($width < 1) {
         $this->_error();
     }
     // Height should be positive integer
     if ($width < 1) {
         $this->_error();
     }
     // Generate the thumbnail
     $thumb->GenerateThumbnail();
     // Check if caching is enabled
     if ($cache == true) {
         $thumb->RenderToFile($cacheFName);
     }
     // Return the thumbnail object
     return $thumb;
 }