[ Index ] |
|
Code source de eGroupWare 1.2.106-2 |
1 <?php 2 3 /*********************************************************************** 4 ** Title.........: ImageMagick Driver 5 ** Version.......: 1.0 6 ** Author........: Xiang Wei ZHUO <wei@zhuo.org> 7 ** Filename......: IM.php 8 ** Last changed..: 30 Aug 2003 9 ** Notes.........: Orginal is from PEAR 10 **/ 11 12 // +----------------------------------------------------------------------+ 13 // | PHP Version 4 | 14 // +----------------------------------------------------------------------+ 15 // | Copyright (c) 1997-2002 The PHP Group | 16 // +----------------------------------------------------------------------+ 17 // | This source file is subject to version 2.02 of the PHP license, | 18 // | that is bundled with this package in the file LICENSE, and is | 19 // | available at through the world-wide-web at | 20 // | http://www.php.net/license/2_02.txt. | 21 // | If you did not receive a copy of the PHP license and are unable to | 22 // | obtain it through the world-wide-web, please send a note to | 23 // | license@php.net so we can mail you a copy immediately. | 24 // +----------------------------------------------------------------------+ 25 // | Authors: Peter Bowyer <peter@mapledesign.co.uk> | 26 // +----------------------------------------------------------------------+ 27 // 28 // $Id: IM.php 14987 2004-04-21 20:43:23Z mipmip $ 29 // 30 // Image Transformation interface using command line ImageMagick 31 // 32 33 require_once "Transform.php"; 34 35 Class Image_Transform_Driver_IM extends Image_Transform 36 { 37 /** 38 * associative array commands to be executed 39 * @var array 40 */ 41 var $command = array(); 42 43 /** 44 * 45 * 46 */ 47 function Image_Transform_Driver_IM() 48 { 49 return true; 50 } // End Image_IM 51 52 /** 53 * Load image 54 * 55 * @param string filename 56 * 57 * @return mixed none or a PEAR error object on error 58 * @see PEAR::isError() 59 */ 60 function load($image) 61 { 62 63 $this->uid = md5($_SERVER['REMOTE_ADDR']); 64 /*if (!file_exists($image)) { 65 return PEAR::raiseError('The image file ' . $image . ' does\'t exist', true); 66 }*/ 67 $this->image = $image; 68 $this->_get_image_details($image); 69 } // End load 70 71 /** 72 * Resize Action 73 * 74 * @param int new_x new width 75 * @param int new_y new height 76 * 77 * @return none 78 * @see PEAR::isError() 79 */ 80 function _resize($new_x, $new_y) 81 { 82 /*if (isset($this->command['resize'])) { 83 return PEAR::raiseError("You cannot scale or resize an image more than once without calling save or display", true); 84 }*/ 85 $this->command['resize'] = "-geometry $new_x}x$new_y}!"; 86 87 $this->new_x = $new_x; 88 $this->new_y = $new_y; 89 } // End resize 90 91 /** 92 * Crop the image 93 * 94 * @param int $crop_x left column of the image 95 * @param int $crop_y top row of the image 96 * @param int $crop_width new cropped image width 97 * @param int $crop_height new cropped image height 98 */ 99 function crop($crop_x, $crop_y, $crop_width, $crop_height) 100 { 101 $this->command['crop'] = "-crop {$crop_width}x{$crop_height}+{$crop_x}+{$crop_y}"; 102 } 103 104 /** 105 * Flip the image horizontally or vertically 106 * 107 * @param boolean $horizontal true if horizontal flip, vertical otherwise 108 */ 109 function flip($horizontal) 110 { 111 if($horizontal) 112 $this->command['flop'] = "-flop"; 113 else 114 $this->command['flip'] = "-flip"; 115 } 116 /** 117 * rotate 118 * 119 * @param int angle rotation angle 120 * @param array options no option allowed 121 * 122 */ 123 function rotate($angle, $options=null) 124 { 125 if ('-' == $angle{0}) { 126 $angle = 360 - substr($angle, 1); 127 } 128 $this->command['rotate'] = "-rotate $angle"; 129 } // End rotate 130 131 /** 132 * addText 133 * 134 * @param array options Array contains options 135 * array( 136 * 'text' The string to draw 137 * 'x' Horizontal position 138 * 'y' Vertical Position 139 * 'Color' Font color 140 * 'font' Font to be used 141 * 'size' Size of the fonts in pixel 142 * 'resize_first' Tell if the image has to be resized 143 * before drawing the text 144 * ) 145 * 146 * @return none 147 * @see PEAR::isError() 148 */ 149 function addText($params) 150 { 151 $default_params = array( 152 'text' => 'This is Text', 153 'x' => 10, 154 'y' => 20, 155 'color' => 'red', 156 'font' => 'Arial.ttf', 157 'resize_first' => false // Carry out the scaling of the image before annotation? 158 ); 159 $params = array_merge($default_params, $params); 160 extract($params); 161 if (true === $resize_first) { 162 // Set the key so that this will be the last item in the array 163 $key = 'ztext'; 164 } else { 165 $key = 'text'; 166 } 167 $this->command[$key] = "-font $font -fill $color -draw 'text $x,$y \"$text\"'"; 168 // Producing error: gs: not found gs: not found convert: Postscript delegate failed [No such file or directory]. 169 } // End addText 170 171 /** 172 * Adjust the image gamma 173 * 174 * @param float $outputgamma 175 * 176 * @return none 177 */ 178 function gamma($outputgamma=1.0) { 179 $this->command['gamma'] = "-gamma $outputgamma"; 180 } 181 182 /** 183 * Save the image file 184 * 185 * @param $filename string the name of the file to write to 186 * @param $quality quality image dpi, default=75 187 * @param $type string (JPG,PNG...) 188 * 189 * @return none 190 */ 191 function save($filename, $type='', $quality = 85) 192 { 193 $type == '' ? $this->type : $type; 194 $cmd = '' . IMAGE_TRANSFORM_LIB_PATH . 'convert" ' . implode(' ', $this->command) . " -quality $quality " . ($this->image) . ' ' . ($filename) . ' 2>&1'; 195 196 //echo $cmd; 197 exec($cmd); 198 } // End save 199 200 /** 201 * Display image without saving and lose changes 202 * 203 * @param string type (JPG,PNG...); 204 * @param int quality 75 205 * 206 * @return none 207 */ 208 function display($type = '', $quality = 75) 209 { 210 if ($type == '') { 211 header('Content-type: image/' . $this->type); 212 passthru(IMAGE_TRANSFORM_LIB_PATH . 'convert ' . implode(' ', $this->command) . " -quality $quality " . escapeshellarg($this->image) . ' ' . strtoupper($this->type) . ":-"); 213 } else { 214 header('Content-type: image/' . $type); 215 passthru(IMAGE_TRANSFORM_LIB_PATH . 'convert ' . implode(' ', $this->command) . " -quality $quality " . escapeshellarg($this->image) . ' ' . strtoupper($type) . ":-"); 216 } 217 } 218 219 220 /** 221 * Destroy image handle 222 * 223 * @return none 224 */ 225 function free() 226 { 227 return true; 228 } 229 230 } // End class ImageIM 231 ?>
titre
Description
Corps
titre
Description
Corps
titre
Description
Corps
titre
Corps
Généré le : Sun Feb 25 17:20:01 2007 | par Balluche grâce à PHPXref 0.7 |