Use C to implement PHP extended Image_Tool image processing tools

Source: Internet
Author: User
Tags zts
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!

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.