readImage($temp_src); $imagick->rotateImage(new ImagickPixel($bgd_color?$bgd_color:'black'), $angle); $imagick->writeImage($temp_dst); //trigger_error( 'imagerotate(): could not write to ' . $file1 . ', original image returned', E_USER_WARNING ); $result = imagecreatefrompng($temp_dst); unlink($temp_dst); unlink($temp_src); return $result; } } function rotateImage($im,$angle) { $new_im = imagerotate($im,$angle,0); imagedestroy($im); return $new_im; } function magnifyImage($im,$magnification) { $w = imagesx($im); $h = imagesy($im); $new_w = intval($w * $magnification); $new_h = intval($h * $magnification); $new_im = imagecreatetruecolor($new_w,$new_h); imagecopyresized($new_im,$im,0,0,0,0,$new_w,$new_h,$w,$h); imagedestroy($im); return $new_im; } function constrainImage($im,$maxwidth,$maxheight) { $w = imagesx($im); $h = imagesy($im); $dim = getProportionalImageSize($w,$h,$maxwidth,$maxheight); $new_im = imagecreatetruecolor($dim['width'],$dim['height']); imagecopyresized($new_im,$im,0,0,0,0,$dim['width'],$dim['height'],$w,$h); imagedestroy($im); return $new_im; } //From www.php.net function getProportionalImageSize($src_w, $src_h, $max_w, $max_h){ $return_val['width']=$src_w; $return_val['height']=$src_h; if($max_w<$src_w || $max_h<$src_h){ $return_val['width']=$max_w; $return_val['height']=$max_h; if($src_w>=$src_h) $return_val['height']=($max_w*$src_h)/$src_w; else $return_val['width']=($max_h*$src_w)/$src_h; } return $return_val; } // // Begin // // Get original image. $im = @imagecreatefromstring(file_get_contents($src)); if (! $im) { trigger_error("Cannot open image: $src",E_USER_ERROR); } // Extract file type extension from image name. $ext = preg_match('/\.(\w{3,4})$/',$src,$matches) ? $matches[1] : ''; // Transform image. if ($rotate) { $im = rotateImage($im,$rotate); } if ($magnify) { $im = magnifyImage($im,$magnify); } if ($maxwidth != null || $maxheight != null) { if ($maxwidth == null) $maxwidth = imagesx($im); // TODO: compute? if ($maxheight == null) $maxheight = imagesy($im); // TODO: compute? $im = constrainImage($im,$maxwidth,$maxheight); } // Output image. switch ($ext) { case 'gif': header('Content-type: image/gif'); imagegif($im); // send output to browser break; case 'jpg': case 'jpeg': header('Content-type: image/jpeg'); imagejpeg($im); // send output to browser break; case 'png': default: header('Content-type: image/png'); imagepng($im); // send output to browser } // Clean up. imagedestroy($im); ?>