public static function load($filename, $configuration = array())
{
$filename = realpath($filename);
// create new image
$instance = new self($configuration);
if (file_exists($filename)) {
// Check the extension
$ext = $instance->check_extension($filename, false);
if ($ext !== false) {
$instance->image_fullpath = $filename;
$instance->image_directory = dirname($filename);
$instance->image_filename = basename($filename);
$instance->image_extension = $ext;
// here we create a temporary file that we apply our filters to
if (empty($instance->image_temp)) {
do {
$instance->image_temp = $instance->configuration['temp_dir'] . substr($instance->configuration['temp_append'] . md5(time() * microtime()), 0, 32) . '.png';
} while (file_exists($instance->image_temp));
} elseif (file_exists($instance->image_temp)) {
$instance->debug('Removing previous temporary image.');
unlink($instance->image_temp);
}
$instance->debug('Temp file: ' . $instance->image_temp);
if (!file_exists($instance->configuration['temp_dir']) || !is_dir($instance->configuration['temp_dir'])) {
throw new \RuntimeException("The temp directory that was given does not exist.");
} elseif (!touch($instance->configuration['temp_dir'] . $instance->configuration['temp_append'] . '_touch')) {
throw new \RuntimeException("Could not write in the temp directory.");
}
// Move the image to the temporary place
$instance->imagick = new \Imagick($instance->image_fullpath);
$instance->imagick->writeImage($instance->image_temp);
} else {
throw new \RuntimeException("The library does not support this filetype for {$filename}.");
}
} else {
throw new \OutOfBoundsException("Image file {$filename} does not exist.");
}
return $instance;
}