X-Git-Url: https://jasonwoof.com/gitweb/?a=blobdiff_plain;f=upload.php;fp=upload.php;h=46f8b3cbd53e7386917bb6c7d697b4b750b1eeff;hb=dabdfec87e89ad579cf543608ad118f30981a1c5;hp=143482cedbc78ca5cf3fb82ddf3500093764ae0b;hpb=a679272cb862dd647da227cc720cd4d4853887c0;p=wfpl.git diff --git a/upload.php b/upload.php index 143482c..46f8b3c 100644 --- a/upload.php +++ b/upload.php @@ -60,7 +60,6 @@ # the type you specified, it will convert the image for you. - $GLOBALS['mime_to_ext'] = array( 'text/plain' => 'txt', 'text/html' => 'html', @@ -157,12 +156,31 @@ function save_uploaded_file($key, $path) { } if(!move_uploaded_file($_FILES[$key]['tmp_name'], $filename)) { - die('file upload failed'); + return false; } return $filename; } +function path_to_convert() { + if(!isset($GLOBALS['path_to_convert'])) { + $convert = '/usr/local/bin/convert'; + if(!file_exists($convert)) { + $convert = '/usr/bin/convert'; + } + if(!file_exists($convert)) { + $convert = `which convert`; + } + if($convert == '' || !file_exists($convert)) { + die("can't find imagemagick's 'convert' program"); + } + + $GLOBALS['path_to_convert'] = $convert; + } + + return $GLOBALS['path_to_convert']; +} + # returns new filename with .png extension function gif_to_png($filename, $new_filename = 'just change extension') { @@ -175,17 +193,8 @@ function gif_to_png($filename, $new_filename = 'just change extension') { $new_filename .= '.png'; } - $convert = '/usr/local/bin/convert'; - if(!file_exists($convert)) { - $convert = '/usr/bin/convert'; - } - if(!file_exists($convert)) { - $convert = `which convert`; - } - if($convert == '' || !file_exists($convert)) { - die("can't find imagemagick's 'convert' program"); - } - + $convert = path_to_convert(); + $command = "$convert " . escapeshellarg($filename) . ' ' . escapeshellarg($new_filename); exec($command, $dummy, $ret); @@ -196,6 +205,41 @@ function gif_to_png($filename, $new_filename = 'just change extension') { return $new_filename; } +# make a thumbnail image. +# +# Thumbnail will have the same filename, except "_thumb" will be added right +# before the dot preceding the extension. so foo.png yields foo_thumb.png +# +# Thumbnail will retain aspect ratio, and be either $max_width wide or +# $max_height tall (or, if the aspect is just right, both) +function make_thumbnail($filename, $max_width = '70', $max_height = '70') { + $thumb = ereg_replace('[.]([a-z]+)$', "_thumb.\\1", $filename); + if($thumb == $filename) { + die("couldn't make thumbnail because filename has no extension."); + } + + $convert = path_to_convert(); + + # can't be too careful + $max_width = ereg_replace('[^0-9]', '', $max_width); + if($max_width == '') { + $max_width = '70'; + } + $max_height = ereg_replace('[^0-9]', '', $max_height); + if($max_height == '') { + $max_height = '70'; + } + + $command = "$convert -geometry ${max_width}x$max_height " . escapeshellarg($filename) . ' ' . escapeshellarg($thumb); + + exec($command, $dummy, $ret); + if($ret != 0) { + die("Thumbnail creatin failed. convert did exit($ret)"); + } + + return $thumb; +} + # like save_uploaded_file() (above) except it converts gifs to pngs. # # FIXME: if a filename is passed in the end of path, we should check if the file type matches, and if not run convert.