This extension is implemented based on ImageMagick. image operations call ImageMagickAPI 1. class documentation.
Class Image_Tool {/*** construct Image_Tool object * @ param string | array $ img_data * $ img_data can be the image path */function _ construct ($ img_data = ""); /*** add text annotations, or the text used for text watermark * @ access public * @ param string $ txt UTF8 encoding * @ param float $ opacity sets the transparency * @ param constant $ gravity * to set the text placement location: * the following attributes can be set for the NorthWest, North, NorthEast, West, Center, East, SouthWest, South, SouthEast, Static * @ param array $ font array: * name, constant, font name. Add Chinese annotations. use a Chinese font. otherwise, garbled characters are displayed. * Supported fonts: SimSun (, default), SimKai (SimHei), SimHei (), MicroHei (Micron black), Arial * weight, font width, int * size, font size, int * color, font color, for example: "blue", "# 0000ff", "rgb (255,)", etc., the default is "black "; * @ return boolean */function annotate ($ txt, $ opacity, $ gravity, array $ font);/*** Re-initialize the object data, it is used to repeatedly reuse an Image_Tool object * @ access public * @ return void */function clean (); ** image synthesis, which can be used to synthesize multiple images, you can also use * @ access public * @ param int $ src_im as an image watermark. G: the target image of the synthesis, it can be an ImageTool object or image binary data * @ param int $ x X x coordinate merged into the canvas * @ param string $ y Y coordinate merged into the canvas * @ return boolean * function composite ($ src_img, $ x, $ y);/*** return error message * @ access public * @ return string */function errmsg (); /*** return error code * @ access public * @ return int */function errcode (); /*** perform image processing operations ** @ access public * @ param string $ format * @ param boolean $ display * @ return boolean | if the string parameter is set to $ display If this parameter is set to true, void is returned. otherwise, binary data is returned. False */function exec ($ format, $ display = false) is returned when a failure occurs./***** horizontal flip * @ access public * @ return boolean */function flipH () is returned (); /***** vertical flip * @ access public * @ return boolean */function flipV (); /*** get image attributes ** @ access public * @ return array | boolean error returns false */function getImageAttr ();/*** noise removal to improve image quality, it is usually used before exec * @ access public * @ return boolean */function improve ();/*** to scale the image. when only width or height is specified, proportional scaling * @ access public * @ param int $ width * @ param int $ height * @ param boolean $ thumbnail indicates whether to clear additional image information * @ return boolean */function resize ($ width, $ height, $ thumbnail = true);/*** scale proportionally. 1 is the original size * @ access public * @ param float $ ratio * @ param boolean $ whether thumbnail clears additional image information * @ return boolean */function resizeRatio ($ ratio, $ thumbnail = true);/*** rotate the image clockwise * @ access public * @ param int $ degree rotation degree (0-360) * @ return boolean */function rotate ($ degree = 90 ); /*** set the binary data of the image to be processed * @ access public * @ param string $ img_blob * @ return boolean */function setData ($ img_blob );}
III. extension implementation
1. php_fetch_url.h
/* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2012 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.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. | +----------------------------------------------------------------------+ | Author: | +----------------------------------------------------------------------+*//* $Id$ */#ifndef PHP_IMAGE_TOOL_H#define PHP_IMAGE_TOOL_Hextern zend_module_entry image_tool_module_entry;#define phpext_image_tool_ptr &image_tool_module_entry#ifdef PHP_WIN32# define PHP_IMAGE_TOOL_API __declspec(dllexport)#elif defined(__GNUC__) && __GNUC__ >= 4# define PHP_IMAGE_TOOL_API __attribute__ ((visibility("default")))#else# define PHP_IMAGE_TOOL_API#endif#ifdef ZTS#include "TSRM.h"#endif#define FETCH_THIS Z_OBJCE_P(getThis()), getThis()#define IMAGETOOL_MAGICKWAND_RSRC_NAME "MagickWand"#define IMAGETOOL_PIXELWAND_RSRC_NAME "PixelWand"#define IMAGETOOL_NORTHWEST 1#define IMAGETOOL_NORTH 2#define IMAGETOOL_NORTHEAST 3#define IMAGETOOL_WEST 4#define IMAGETOOL_CENTER 5#define IMAGETOOL_EAST 6#define IMAGETOOL_SOUTHWEST 7#define IMAGETOOL_SOUTH 8#define IMAGETOOL_SOUTHEAST 9#define IMAGETOOL_STATIC 10#define IMAGETOOL_TOP_LEFT 1#define IMAGETOOL_TOP_CENTER 2#define IMAGETOOL_TOP_RIGHT 3#define IMAGETOOL_CENTER_LEFT 4#define IMAGETOOL_CENTER_CENTER 5#define IMAGETOOL_CENTER_RIGHT 6#define IMAGETOOL_BOTTOM_LEFT 7#define IMAGETOOL_BOTTOM_CENTER 8#define IMAGETOOL_BOTTOM_RIGHT 9#define GET_MAGICK_WAND(zval, magick_wand) zval = zend_read_property(FETCH_THIS, ZEND_STRL("magick_wand"), 0 TSRMLS_CC);\ ZEND_FETCH_RESOURCE_NO_RETURN(magick_wand, MagickWand*, &zval, -1, IMAGETOOL_MAGICKWAND_RSRC_NAME, le_image_wand);PHP_MINIT_FUNCTION(image_tool);PHP_MSHUTDOWN_FUNCTION(image_tool);PHP_RINIT_FUNCTION(image_tool);PHP_RSHUTDOWN_FUNCTION(image_tool);PHP_MINFO_FUNCTION(image_tool);#ifdef ZTS#define IMAGE_TOOL_G(v) TSRMG(image_tool_globals_id, zend_image_tool_globals *, v)#else#define IMAGE_TOOL_G(v) (image_tool_globals.v)#endif#endif /* PHP_IMAGE_TOOL_H */
For more information about how to use C to implement PHP extension Image_Tool for commonly used image processing tools, refer to PHP Chinese network!