$c = count($parts);
$parts[$c - 1] = $basenamePrefix . $parts[$c - 1];
$cachedImagePath = 'cache/' . implode('/', $parts);
$cachedImageDirectory = dirname($cachedImagePath);
if (!file_exists($cachedImagePath)) {
    include_once dirname(__FILE__) . '/../../project.php';
    if (!file_exists($cachedImageDirectory)) {
        mkdir($cachedImageDirectory, 0755, true);
    }
    $imageProc = new ImageProcessor($originalImagePath);
    if (isset($method)) {
        call_user_func_array(array($imageProc, $method), $params);
    }
    if ($applyWatermark) {
        $watermarkImagePath = dirname(__FILE__) . '/watermark2.png';
        $imageProc->applyWatermark($watermarkImagePath);
    }
    $imageProc->save($cachedImagePath);
    $imageProc->destroy();
    $isCached = 'NO';
} else {
    $isCached = 'YES';
}
header('X-Image-Cached:' . $isCached);
header('Content-Type:image/jpeg');
if ($isCached == "YES") {
    header("Cache-Control: private, max-age=10800, pre-check=10800");
    header("Pragma: private");
    header("Expires: " . date(DATE_RFC822, strtotime(" 30 day")));
}
@readfile($cachedImagePath);