📄 gd.php
字号:
<?php/************************************************************************* Title.........: GD Driver** Version.......: 1.0** Author........: Xiang Wei ZHUO <wei@zhuo.org>** Filename......: GD.php** Last changed..: 30 Aug 2003 ** Notes.........: Orginal is from PEAR**/// +----------------------------------------------------------------------+// | PHP Version 4 |// +----------------------------------------------------------------------+// | Copyright (c) 1997-2002 The PHP Group |// +----------------------------------------------------------------------+// | This source file is subject to version 2.02 of the PHP license, |// | that is bundled with this package in the file LICENSE, and is |// | available at through the world-wide-web at |// | http://www.php.net/license/2_02.txt. |// | If you did not receive a copy of the PHP license and are unable to |// | obtain it through the world-wide-web, please send a note to |// | license@php.net so we can mail you a copy immediately. |// +----------------------------------------------------------------------+// | Authors: Peter Bowyer <peter@mapledesign.co.uk> |// | Alan Knowles <alan@akbkhome.com> |// +----------------------------------------------------------------------+//// Usage :// $img = new Image_Transform_GD();// $angle = -78;// $img->load('magick.png');//// if($img->rotate($angle,array('autoresize'=>true,'color_mask'=>array(255,0,0)))){// $img->addText(array('text'=>"Rotation $angle",'x'=>0,'y'=>100,'font'=>'/usr/share/fonts/default/TrueType/cogb____.ttf'));// $img->display();// } else {// echo "Error";// }////// $Id: GD.php 26 2004-03-31 02:35:21Z Wei Zhuo $//// Image Transformation interface using the GD library//require_once "Transform.php";Class Image_Transform_Driver_GD extends Image_Transform{ /** * Holds the image file for manipulation */ var $imageHandle = ''; /** * Holds the original image file */ var $old_image = ''; /** * Check settings * * @return mixed true or or a PEAR error object on error * * @see PEAR::isError() */ function Image_Transform_GD() { return; } // End function Image /** * Load image * * @param string filename * * @return mixed none or a PEAR error object on error * @see PEAR::isError() */ function load($image) { $this->uid = md5($_SERVER['REMOTE_ADDR']); $this->image = $image; $this->_get_image_details($image); $functionName = 'ImageCreateFrom' . $this->type; if(function_exists($functionName)) { $this->imageHandle = $functionName($this->image); } } // End load /** * addText * * @param array options Array contains options * array( * 'text' The string to draw * 'x' Horizontal position * 'y' Vertical Position * 'Color' Font color * 'font' Font to be used * 'size' Size of the fonts in pixel * 'resize_first' Tell if the image has to be resized * before drawing the text * ) * * @return none * @see PEAR::isError() */ function addText($params) { $default_params = array( 'text' => 'This is Text', 'x' => 10, 'y' => 20, 'color' => array(255,0,0), 'font' => 'Arial.ttf', 'size' => '12', 'angle' => 0, 'resize_first' => false // Carry out the scaling of the image before annotation? Not used for GD ); $params = array_merge($default_params, $params); extract($params); if( !is_array($color) ){ if ($color[0]=='#'){ $this->colorhex2colorarray( $color ); } else { include_once('Image/Transform/Driver/ColorsDefs.php'); $color = isset($colornames[$color])?$colornames[$color]:false; } } $c = imagecolorresolve ($this->imageHandle, $color[0], $color[1], $color[2]); if ('ttf' == substr($font, -3)) { ImageTTFText($this->imageHandle, $size, $angle, $x, $y, $c, $font, $text); } else { ImagePSText($this->imageHandle, $size, $angle, $x, $y, $c, $font, $text); } return true; } // End addText /** * Rotate image by the given angle * Uses a fast rotation algorythm for custom angles * or lines copy for multiple of 90 degrees * * @param int $angle Rotation angle * @param array $options array( 'autoresize'=>true|false, * 'color_mask'=>array(r,g,b), named color or #rrggbb * ) * @author Pierre-Alain Joye * @return mixed none or a PEAR error object on error * @see PEAR::isError() */ function rotate($angle, $options=null) { if(function_exists('imagerotate') && false) { $white = imagecolorallocate ($this->imageHandle, 255, 255, 255); $this->imageHandle = imagerotate($this->imageHandle, $angle, $white); return true; } if ( $options==null ){ $autoresize = true; $color_mask = array(255,255,0); } else { extract( $options ); } while ($angle <= -45) { $angle += 360; } while ($angle > 270) { $angle -= 360; } $t = deg2rad($angle); if( !is_array($color_mask) ){ if ($color[0]=='#'){ $this->colorhex2colorarray( $color_mask ); } else { include_once('Image/Transform/Driver/ColorDefs.php'); $color = isset($colornames[$color_mask])?$colornames[$color_mask]:false; } } // Do not round it, too much lost of quality $cosT = cos($t); $sinT = sin($t); $img =& $this->imageHandle; $width = $max_x = $this->img_x; $height = $max_y = $this->img_y; $min_y = 0; $min_x = 0; $x1 = round($max_x/2,0); $y1 = round($max_y/2,0); if ( $autoresize ){ $t = abs($t); $a = round($angle,0); switch((int)($angle)){ case 0: $width2 = $width; $height2 = $height; break; case 90: $width2 = $height; $height2 = $width; break; case 180: $width2 = $width; $height2 = $height; break; case 270: $width2 = $height; $height2 = $width; break; default: $width2 = (int)(abs(sin($t) * $height + cos($t) * $width)); $height2 = (int)(abs(cos($t) * $height+sin($t) * $width)); } $width2 -= $width2%2; $height2 -= $height2%2; $d_width = abs($width - $width2); $d_height = abs($height - $height2); $x_offset = $d_width/2; $y_offset = $d_height/2; $min_x2 = -abs($x_offset); $min_y2 = -abs($y_offset); $max_x2 = $width2; $max_y2 = $height2; } if(function_exists('ImageCreateTrueColor')){ $img2 =ImageCreateTrueColor($width2,$height2); } else { $img2 =ImageCreate($width2,$height2); } if ( !is_resource($img2) ){ return false;/*PEAR::raiseError('Cannot create buffer for the rotataion.', null, PEAR_ERROR_TRIGGER, E_USER_NOTICE);*/ } $this->img_x = $width2; $this->img_y = $height2;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -