diff --git a/api.php b/api.php index 5a8bf30..6a0c5e3 100644 --- a/api.php +++ b/api.php @@ -6,63 +6,72 @@ $js = $_GET['js']; $resizewidth = $_GET['width']; $cache = preg_replace("/[^A-Za-z0-9 ]/", '', $_GET['cache']); $onfail = rawurldecode($_GET['onfail']); -if(!$onfail) + +if (!$onfail) { $onfail = 'https://http2pic.haschek.at/img/failed.jpg'; +} + $url = rawurldecode($_GET['url']); -if(isBase64($url)) +if (isBase64($url)) { $url = base64_decode($url); +} -if(!$timeout || !is_numeric($timeout) || ($timeout>30 || $timeout<1)) +if (!$timeout || !is_numeric($timeout) || ($timeout > 30 || $timeout < 1)) { $timeout = 10; +} -if($viewport) -{ - $a=explode('x', $viewport); +if ($viewport) { + $a = explode('x', $viewport); $w = $a[0]; $h = $a[1]; - if($w) + if ($w) { $vp = "--width $w "; - if($h) - $vp.= "--height $h "; - + } + if ($h) { + $vp .= "--height $h "; + } } -if($js=='no') +if ($js == 'no') { $jsp = '-n '; +} switch ($type) { case 'png': - $ft = $type; + $fileType = $type; header('Content-Type: image/png'); - break; - + break; case 'jpg': case 'jpeg': default: - $ft = 'jpg'; + $fileType = 'jpg'; header('Content-Type: image/jpeg'); } +$hash = $cache.'-'.preg_replace("/[^A-Za-z0-9 ]/", '', $url).'.'.$fileType; - -$hash = $cache.'-'.preg_replace("/[^A-Za-z0-9 ]/", '', $url).'.'.$ft; -if(!$cache) +if (!$cache) { $hash = md5(time().rand(1,2000)).$hash; +} -if(!is_dir(__DIR__.'/cache/')) +if (!is_dir(__DIR__.'/cache/')) { mkdir(__DIR__.'/cache/'); +} + $file = __DIR__.'/cache/'.$hash; -if(!file_exists($file)) - shell_exec('timeout '.$timeout.' /usr/sbin/wkhtmltoimage '.escapeshellcmd($vp.$jsp.'-f '.$ft.' '.$url.' '.$file)); -if(filesize($file)==0 && $onfail) +if (!file_exists($file)) { + shell_exec('timeout '.$timeout.' /usr/sbin/wkhtmltoimage '.escapeshellcmd($vp.$jsp.'-f '.$fileType.' '.$url.' '.$file)); +} + +if (filesize($file) == 0 && $onfail) { @file_put_contents($file, file_get_contents($onfail)); +} -if($resizewidth) -{ +if ($resizewidth) { list($width_orig, $height_orig) = getimagesize($file); - if($width_orig!=$resizewidth) - { + + if ($width_orig != $resizewidth) { $ratio_orig = $width_orig/$height_orig; $height = $resizewidth/$ratio_orig; @@ -75,27 +84,25 @@ if($resizewidth) } -if($ft=='jpg') -{ - $res = imagecreatefromjpeg($file); - imagejpeg($res,NULL,100); +if ($fileType === 'jpg') { + $result = imagecreatefromjpeg($file); + imagejpeg($result, NULL, 100); } -else if($ft=='png') -{ - $res = imagecreatefrompng($file); - imagepng($res,NULL,9); +else if ($fileType === 'png') { + $result = imagecreatefrompng($file); + imagepng($result, NULL, 9); } -imagedestroy($res); +imagedestroy($result); -if(!$cache) +if (!$cache) { unlink($file); +} -function isBase64($data) -{ - if ( base64_encode(base64_decode($data, true)) === $data) +function isBase64($data) { + if (base64_encode(base64_decode($data, true)) === $data) { return true; - else - return false; + } + return false; } \ No newline at end of file