diff options
author | Greg Froese <greg.froese@gmail.com> | 2009-05-11 05:44:02 +0000 |
---|---|---|
committer | Greg Froese <greg.froese@gmail.com> | 2009-05-11 05:44:02 +0000 |
commit | d9964ef61832a507ed78a0e4bf4208700cb16f9f (patch) | |
tree | 627da4d6a266727fcc816bb3f0429345cfb2b931 /actions/resize.php | |
parent | 076994be737bc012ea0017c2a5fa2af842911cce (diff) | |
download | elgg-d9964ef61832a507ed78a0e4bf4208700cb16f9f.tar.gz elgg-d9964ef61832a507ed78a0e4bf4208700cb16f9f.tar.bz2 |
imagemagick support for creating thumbnails and watermarking
Diffstat (limited to 'actions/resize.php')
-rw-r--r-- | actions/resize.php | 109 |
1 files changed, 109 insertions, 0 deletions
diff --git a/actions/resize.php b/actions/resize.php new file mode 100644 index 000000000..8a8a5bb34 --- /dev/null +++ b/actions/resize.php @@ -0,0 +1,109 @@ +<?php + +/* + * Gets the jpeg contents of the resized version of an already uploaded image + * (Returns false if the uploaded file was not an image) + * + * @param string $input_name The name of the file input field on the submission form + * @param string $prefix The text to prefix to the existing filename + * @param int $maxwidth The maximum width of the resized image + * @param int $maxheight The maximum height of the resized image + * @param true|false $square If set to true, will take the smallest of maxwidth and maxheight and use it to set the dimensions on all size; the image will be cropped. + * @return false|mixed The contents of the resized image, or false on failure + */ + function tp_resize($input_name, $prefix, $maxwidth, $maxheight, $square = false, $x1 = 0, $y1 = 0, $x2 = 0, $y2 = 0) { + $params = array( + "input_name"=>$input_name, + "output_name"=>$output_name, + "maxwidth"=>$maxwidth, + "maxheight"=>$maxheight, + "square"=>$square, + "x1"=>$x1, + "y1"=>$y1, + "x2"=>$x2, + "y2"=>$y2); + + $path = pathinfo($input_name); + $output_name = $path["dirname"] . "/$prefix" . $path["filename"] . "." . $path["extension"]; + + // Get the size information from the image + if ($imgsizearray = getimagesize($input_name)) { + + // Get width and height + $width = $imgsizearray[0]; + $height = $imgsizearray[1]; + $newwidth = $width; + $newheight = $height; + + // Square the image dimensions if we're wanting a square image + if ($square) { + if ($width < $height) { + $height = $width; + } else { + $width = $height; + } + + $newwidth = $width; + $newheight = $height; + + } + + if ($width > $maxwidth) { + $newheight = floor($height * ($maxwidth / $width)); + $newwidth = $maxwidth; + } + if ($newheight > $maxheight) { + $newwidth = floor($newwidth * ($maxheight / $newheight)); + $newheight = $maxheight; + } + + $accepted_formats = array( + 'image/jpeg' => 'jpeg', + 'image/png' => 'png', + 'image/gif' => 'gif' + ); + // If it's a file we can manipulate ... + if (array_key_exists($imgsizearray['mime'],$accepted_formats)) { + +// $function = "imagecreatefrom" . $accepted_formats[$imgsizearray['mime']]; +// $newimage = imagecreatetruecolor($newwidth,$newheight); + +// if (is_callable($function) && $oldimage = $function($input_name)) { + // Crop the image if we need a square + if ($square) { + if ($x1 == 0 && $y1 == 0 && $x2 == 0 && $y2 ==0) { + $widthoffset = floor(($imgsizearray[0] - $width) / 2); + $heightoffset = floor(($imgsizearray[1] - $height) / 2); + } else { + $widthoffset = $x1; + $heightoffset = $y1; + $width = ($x2 - $x1); + $height = $width; + } + } else { + if ($x1 == 0 && $y1 == 0 && $x2 == 0 && $y2 ==0) { + $widthoffset = 0; + $heightoffset = 0; + } else { + $widthoffset = $x1; + $heightoffset = $y1; + $width = ($x2 - $x1); + $height = ($y2 - $y1); + } + }//else { + // Resize and return the image contents! + if ($square) { + $newheight = $maxheight; + $newwidth = $maxwidth; + } + $command = "convert $input_name -resize ".$newwidth."x".$newheight."^ -gravity center -extent ".$newwidth."x".$newheight." $output_name"; + system($command); + return $output_name; + + } + } + + return false; + } + +?> |