+try {
+ mkthumb($imgpath, $target, $width, $height);
+}
+catch (Exception $e) {
+ http_response_code($e->getCode() ?: 500);
+ $target = '500.png';
+ if (file_exists($target)) {
+ header("X-Error: ".$e->getMessage());
+ header('Content-type: '.mime_content_type($target));
+ readfile($target);
+ exit;
+ }
+ trigger_error("thumbnail creation failed: ".$e->getMessage(), E_USER_WARNING);
+ exit;
+}
+
+header('Content-type: '.mime_content_type($target));
+readfile($target);
+exit;
+
+function mkthumb($source, $target, $width, $height)
+{
+ if (isset($_GET['backend'])) {
+ $backend = $_GET['backend'];
+ }
+ elseif (file_exists($target)) {
+ return;
+ }
+ else {
+ $backend = 'exec';
+ }
+ $backend = "mkthumb_$backend";
+