php实现的通用图片处理类

本文实例讲述了php实现的通用图片处理类。分享给大家供大家参考。具体如下:

该图片处理函数功能:缩放、剪切、相框、水印、锐化、旋转、翻转、透明度、反色,处理并保存历史记录的思路:当有图片有改动时自动生成一张新图片,命名方式可以考虑在原图片的基础上加上步骤,例如:图片名称+__第几步。 在一些需要图片高级处理功能的Web应用中,可以参考这个类。

<?php
class picture
{
  var $PICTURE_URL;//要处理的图片
  var $DEST_URL="temp__01.jpg";//生成目标图片位置
  var $PICTURE_CREATE;//要创建的图片
  var $TURE_COLOR;//新建一个真彩图象
  var $PICTURE_WIDTH;//原图片宽度
  var $PICTURE_HEIGHT;//原图片高度
/*
水印的类型,默认的为水印文字
*/
  var $MARK_TYPE=1;
  var $WORD;//经过UTF-8后的文字
  var $WORD_X;//文字横坐标
  var $WORD_Y;//文字纵坐标
  var $FONT_TYPE;//字体类型
  var $FONT_SIZE="12";//字体大小
  var $FONT_WORD;//文字
  var $ANGLE=0;//文字的角度,默认为0
  var $FONT_COLOR="#000000";//文字颜色
  var $FONT_PATH="font/simkai.ttf";//字体库,默认为宋体
  var $FORCE_URL;//水印图片
  var $FORCE_X=0;//水印横坐标
  var $FORCE_Y=0;//水印纵坐标
  var $FORCE_START_X=0;//切起水印的图片横坐标
  var $FORCE_START_Y=0;//切起水印的图片纵坐标
  var $PICTURE_TYPE;//图片类型
  var $PICTURE_MIME;//输出的头部
/*
缩放比例为1的话就按缩放高度和宽度缩放
*/
  var $ZOOM=1;//缩放类型
  var $ZOOM_MULTIPLE;//缩放比例
  var $ZOOM_WIDTH;//缩放宽度
  var $ZOOM_HEIGHT;//缩放高度
/*
裁切,按比例和固定长度、宽度
*/
  var $CUT_TYPE=1;//裁切类型
  var $CUT_X=0;//裁切的横坐标
  var $CUT_Y=0;//裁切的纵坐标
  var $CUT_;//裁切的宽度
  var $CUT_HEIGHT=100;//裁切的高度
/*
锐化
*/
  var $SHARP="7.0";//锐化程度
/*
透明度处理
*/
  var $ALPHA='100';//透明度在0-127之间
  var $ALPHA_X="90";
  var $ALPHA_Y="50";
/*
任意角度旋转
*/
  var $CIRCUMROTATE="90.0";//注意,必须为浮点数
/*
出错信息
*/
  var $ERROR=array(
    'unalviable'=>'没有找到相关图片!'
  );
/*
构造函数:函数初始化
*/
  function __construct($PICTURE_URL)
  {
    $this->get_info($PICTURE_URL);
  }
  function get_info($PICTURE_URL)
  {
    /*
    处理原图片的信息,先检测图片是否存在,不存在则给出相应的信息
    */
    @$SIZE=getimagesize($PICTURE_URL);
    if(!$SIZE)
    {
      exit($this->ERROR['unalviable']);
    }
    //得到原图片的信息类型、宽度、高度
    $this->PICTURE_MIME=$SIZE['mime'];
    $this->PICTURE_;
    $this->PICTURE_HEIGHT=$SIZE[1];
    //创建图片
    switch($SIZE[2])
    {
      case 1:
        $this->PICTURE_CREATE=imagecreatefromgif($PICTURE_URL);
        $this->PICTURE_TYPE="imagejpeg";
        $this->PICTURE_EXT="jpg";
        break;
      case 2:
        $this->PICTURE_CREATE=imagecreatefromjpeg($PICTURE_URL);
        $this->PICTURE_TYPE="imagegif";
        $this->PICTURE_EXT="gif";
        break;
      case 3:
        $this->PICTURE_CREATE=imagecreatefrompng($PICTURE_URL);
        $this->PICTURE_TYPE="imagepng";
        $this->PICTURE_EXT="png";
        break;
    }
    /*
    文字颜色转换16进制转换成10进制
    */
    preg_match_all("/([0-f]){2,2}/i",$this->FONT_COLOR,$MATCHES);
    if(count($MATCHES)==3)
    {
      $this->RED=hexdec($MATCHES[0][0]);
      $this->GREEN=hexdec($MATCHES[0][1]);
      $this->BLUE=hexdec($MATCHES[0][2]);
    }
  }
  //end of __construct
  /*
  将16进制的颜色转换成10进制的(R,G,B)
  */
  function hex2dec()
  {
    preg_match_all("/([0-f]){2,2}/i",$this->FONT_COLOR,$MATCHES);
    if(count($MATCHES)==3)
    {
      $this->RED=hexdec($MATCHES[0][0]);
      $this->GREEN=hexdec($MATCHES[0][1]);
      $this->BLUE=hexdec($MATCHES[0][2]);
    }
  }
  //缩放类型
  function zoom_type($ZOOM_TYPE)
  {
    $this->ZOOM=$ZOOM_TYPE;
  }
  //对图片进行缩放,如果不指定高度和宽度就进行缩放
  function zoom()
  {
    //缩放的大小
    if($this->ZOOM==0)
    {
      $this->ZOOM_;gt;PICTURE_WIDTH * $this->ZOOM_MULTIPLE;
      $this->ZOOM_HEIGHT=$this->PICTURE_HEIGHT * $this->ZOOM_MULTIPLE;
    }
    //新建一个真彩图象
    $this->TRUE_COLOR=imagecreatetruecolor($this->ZOOM_WIDTH,$this->ZOOM_HEIGHT);
    $WHITE=imagecolorallocate($this->TRUE_COLOR,255,255,255);
    imagefilledrectangle($this->TRUE_COLOR,0,0,$this->ZOOM_WIDTH,$this->ZOOM_HEIGHT,$WHITE);
    imagecopyresized($this->TRUE_COLOR,$this->PICTURE_CREATE,0,0,0,0,$this->ZOOM_WIDTH,$this->ZOOM_HEIGHT,$this->PICTURE_WIDTH,$this->PICTURE_HEIGHT);
  }
  //end of zoom
  //裁切图片,按坐标或自动
  function cut()
  {
    $this->TRUE_COLOR=imagecreatetruecolor($this->CUT_WIDTH,$this->CUT_WIDTH);
    imagecopy($this->TRUE_COLOR,$this->PICTURE_CREATE, 0, 0, $this->CUT_X, $this->CUT_Y,$this->CUT_WIDTH,$this->CUT_HEIGHT);
  }
  //end of cut
  /*
  在图片上放文字或图片
  水印文字
  */
  function _mark_text()
  {
    $this->TRUE_COLOR=imagecreatetruecolor($this->PICTURE_WIDTH,$this->PICTURE_HEIGHT);
    $this->WORD=mb_convert_encoding($this->FONT_WORD,'utf-8','gb2312');
    /*
    取得使用 TrueType 字体的文本的范围
    */
    $TEMP = imagettfbbox($this->FONT_SIZE,0,$this->FONT_PATH,$this->WORD);
    $WORD_LENGTH=strlen($this->WORD);
    $WORD_WIDTH =$TEMP[2] - $TEMP[6];
    $WORD_HEIGHT =$TEMP[3] - $TEMP[7];
    /*
    文字水印的默认位置为右下角
    */
    if($this->WORD_X=="")
    {
      $this->WORD_X=$this->PICTURE_WIDTH-$WORD_WIDTH;
    }
    if($this->WORD_Y=="")
    {
      $this->WORD_Y=$this->PICTURE_HEIGHT-$WORD_HEIGHT;
    }
    imagesettile($this->TRUE_COLOR,$this->PICTURE_CREATE);
    imagefilledrectangle($this->TRUE_COLOR,0,0,$this->PICTURE_WIDTH,$this->PICTURE_HEIGHT,IMG_COLOR_TILED);
    $TEXT2=imagecolorallocate($this->TRUE_COLOR,$this->RED,$this->GREEN,$this->Blue);
    imagettftext($this->TRUE_COLOR,$this->FONT_SIZE,$this->ANGLE,$this->WORD_X,$this->WORD_Y,$TEXT2,$this->FONT_PATH,$this->WORD);
  }
  /*
  水印图片
  */
function _mark_picture()
{
  /*
  获取水印图片的信息
  */
  @$SIZE=getimagesize($this->FORCE_URL);
  if(!$SIZE)
  {
    exit($this->ERROR['unalviable']);
  }
  $FORCE_PICTURE_;
  $FORCE_PICTURE_HEIGHT=$SIZE[1];
  //创建水印图片
  switch($SIZE[2])
  {
    case 1:
      $FORCE_PICTURE_CREATE=imagecreatefromgif($this->FORCE_URL);
      $FORCE_PICTURE_TYPE="gif";
      break;
    case 2:
      $FORCE_PICTURE_CREATE=imagecreatefromjpeg($this->FORCE_URL);
      $FORCE_PICTURE_TYPE="jpg";
      break;
    case 3:
      $FORCE_PICTURE_CREATE=imagecreatefrompng($this->FORCE_URL);
      $FORCE_PICTURE_TYPE="png";
      break;
  }
/*
  判断水印图片的大小,并生成目标图片的大小,如果水印比图片大,则生成图片大小为水印图片的大小。否则生成的图片大小为原图片大小。
*/
  $this->NEW_PICTURE=$this->PICTURE_CREATE;
  if($FORCE_PICTURE_WIDTH>$this->PICTURE_WIDTH)
  {
    $CREATE_;gt;FORCE_START_X;
  }
  else
  {
    $CREATE_;gt;PICTURE_WIDTH;
  }
  if($FORCE_PICTURE_HEIGHT>$this->PICTURE_HEIGHT)
  {
    $CREATE_HEIGHT=$FORCE_PICTURE_HEIGHT-$this->FORCE_START_Y;
  }
  else
  {
    $CREATE_HEIGHT=$this->PICTURE_HEIGHT;
  }
  /*
  创建一个画布
  */
  $NEW_PICTURE_CREATE=imagecreatetruecolor($CREATE_WIDTH,$CREATE_HEIGHT);
  $WHITE=imagecolorallocate($NEW_PICTURE_CREATE,255,255,255);
  /*
  将背景图拷贝到画布中
  */
  imagecopy($NEW_PICTURE_CREATE, $this->PICTURE_CREATE, 0, 0, 0, 0,$this->PICTURE_WIDTH,$this->PICTURE_HEIGHT);
  /*
  将目标图片拷贝到背景图片上
  */
  imagecopy($NEW_PICTURE_CREATE, $FORCE_PICTURE_CREATE, $this->FORCE_X, $this->FORCE_Y, $this->FORCE_START_X, $this->FORCE_START_Y,$FORCE_PICTURE_WIDTH,$FORCE_PICTURE_HEIGHT);
  $this->TRUE_COLOR=$NEW_PICTURE_CREATE;
}
//end of mark
function alpha_()
{
  $this->TRUE_COLOR=imagecreatetruecolor($this->PICTURE_WIDTH,$this->PICTURE_HEIGHT);
  $rgb="#CDCDCD";
  $tran_color="#000000";
  for($j=0;$j<=$this->PICTURE_HEIGHT-1;$j++)
  {
    for ($i=0;$i<=$this->PICTURE_WIDTH-1;$i++)
    {
      $rgb = imagecolorat($this->PICTURE_CREATE,$i,$j);
      $r = ($rgb >> 16) & 0xFF;
      $g = ($rgb >> 8) & 0xFF;
      $b = $rgb & 0xFF;
      $now_color=imagecolorallocate($this->PICTURE_CREATE,$r,$g,$b);
      if ($now_color==$tran_color)
      {
        continue;
      }
      else
      {
        $color=imagecolorallocatealpha($this->PICTURE_CREATE,$r,$g,$b,$ALPHA);
        imagesetpixel($this->PICTURE_CREATE,$ALPHA_X+$i,$ALPHA_Y+$j,$color);
      }
      $this->TRUE_COLOR=$this->PICTURE_CREATE;
    }
  }
}
/*
图片旋转:
沿y轴旋转
*/
function turn_y()
{
  $this->TRUE_COLOR=imagecreatetruecolor($this->PICTURE_WIDTH,$this->PICTURE_HEIGHT);
  for ($x = 0; $x < $this->PICTURE_WIDTH; $x++)
  {
    imagecopy($this->TRUE_COLOR, $this->PICTURE_CREATE, $this->PICTURE_WIDTH - $x - 1, 0, $x, 0, 1, $this->PICTURE_HEIGHT);
  }
}
/*
沿X轴旋转
*/
function turn_x()
{
  $this->TRUE_COLOR=imagecreatetruecolor($this->PICTURE_WIDTH,$this->PICTURE_HEIGHT);
  for ($y = 0; $y < $this->PICTURE_HEIGHT; $y++)
  {
    imagecopy($this->TRUE_COLOR, $this->PICTURE_CREATE, 0, $this->PICTURE_HEIGHT - $y - 1, 0, $y, $this->PICTURE_WIDTH, 1);
  }
}
/*
任意角度旋转
*/
function turn()
{
  $this->TRUE_COLOR=imagecreatetruecolor($this->PICTURE_WIDTH,$this->PICTURE_HEIGHT);
  imageCopyResized($this->TRUE_COLOR,$this->PICTURE_CREATE,0,0,0,0,$this->PICTURE_WIDTH,$this->PICTURE_HEIGHT,$this->PICTURE_WIDTH,$this->PICTURE_HEIGHT);
  $WHITE=imagecolorallocate($this->TRUE_COLOR,255,255,255);
  $this->TRUE_COLOR=imagerotate ($this->TRUE_COLOR, $this->CIRCUMROTATE, $WHITE);
}
/*
图片锐化
*/
function sharp()
{
  $this->TRUE_COLOR=imagecreatetruecolor($this->PICTURE_WIDTH,$this->PICTURE_HEIGHT);
  $cnt=0;
  for ($x=0; $x<$this->PICTURE_WIDTH; $x++)
  {
    for ($y=0; $y<$this->PICTURE_HEIGHT; $y++)
    {
      $src_clr1 = imagecolorsforindex($this->TRUE_COLOR, imagecolorat($this->PICTURE_CREATE, $x-1, $y-1));
      $src_clr2 = imagecolorsforindex($this->TRUE_COLOR, imagecolorat($this->PICTURE_CREATE, $x, $y));
      $r = intval($src_clr2["red"]+$this->SHARP*($src_clr2["red"]-$src_clr1["red"]));
      $g = intval($src_clr2["green"]+$this->SHARP*($src_clr2["green"]-$src_clr1["green"]));
      $b = intval($src_clr2["blue"]+$this->SHARP*($src_clr2["blue"]-$src_clr1["blue"]));
      $r = min(255, max($r, 0));
      $g = min(255, max($g, 0));
      $b = min(255, max($b, 0));
      if (($DST_CLR=imagecolorexact($this->PICTURE_CREATE, $r, $g, $b))==-1)
        $DST_CLR = imagecolorallocate($this->PICTURE_CREATE, $r, $g, $b);
        $cnt++;
      if ($DST_CLR==-1) die("color allocate faile at $x, $y ($cnt).");
        imagesetpixel($this->TRUE_COLOR, $x, $y, $DST_CLR);
    }
  }
}
/*
  将图片反色处理??
*/
function return_color()
{
  /*
  创建一个画布
  */
  $NEW_PICTURE_CREATE=imagecreate($this->PICTURE_WIDTH,$this->PICTURE_HEIGHT);
  $WHITE=imagecolorallocate($NEW_PICTURE_CREATE,255,255,255);
  /*
  将背景图拷贝到画布中
  */
  imagecopy($NEW_PICTURE_CREATE, $this->PICTURE_CREATE, 0, 0, 0, 0,$this->PICTURE_WIDTH,$this->PICTURE_HEIGHT);
  $this->TRUE_COLOR=$NEW_PICTURE_CREATE;
}
/*
生成目标图片并显示
*/
function show()
{
  // 判断浏览器,若是IE就不发送头
  if(isset($_SERVER['HTTP_USER_AGENT']))
  {
    $ua = strtoupper($_SERVER['HTTP_USER_AGENT']);
    if(!preg_match('/^.*MSIE.*\)$/i',$ua))
    {
      header("Content-type:$this->PICTURE_MIME");
    }
  }
  $OUT=$this->PICTURE_TYPE;
  $OUT($this->TRUE_COLOR);
}
/*
生成目标图片并保存
*/
function save_picture()
{
  // 以 JPEG 格式将图像输出到浏览器或文件
  $OUT=$this->PICTURE_TYPE;
  if(function_exists($OUT))
  {
    // 判断浏览器,若是IE就不发送头
    if(isset($_SERVER['HTTP_USER_AGENT']))
    {
      $ua = strtoupper($_SERVER['HTTP_USER_AGENT']);
      if(!preg_match('/^.*MSIE.*\)$/i',$ua))
      {
        header("Content-type:$this->PICTURE_MIME");
      }
    }
    if(!$this->TRUE_COLOR)
    {
      exit($this->ERROR['unavilable']);
    }
    else
    {
      $OUT($this->TRUE_COLOR,$this->DEST_URL);
      $OUT($this->TRUE_COLOR);
    }
  }
}
/*
析构函数:释放图片
*/
function __destruct()
{
/*释放图片*/
  imagedestroy($this->TRUE_COLOR);
  imagedestroy($this->PICTURE_CREATE);
}
//end of class
}
?>

希望本文所述对大家的php程序设计有所帮助。

(0)

相关推荐

  • PHP图片处理类 phpThumb参数用法介绍

    phpThumb几个基本参数 一些有用的参数列一下: src:目标图片的地址 w:输出图片的宽度 h:输出图片的高度(如果不指定他将按w参数等比缩放) q:输出如果是JPG格式的,可以规定它的输出质量 bg:输出时的背景(如果需要) sw.sh.sx.sy:局部输出,宽高.起始位置 f:输出格式,可以为jpeg.png.gif.ico sfn:输出gif动画中的某一帧 fltr[]:滤镜,可以有很多效果,包括锐化.模糊.旋翻转.水印.边框.遮照.色彩调整等 更多效果可以参看官方例程: http:

  • dedecms 批量提取第一张图片最为缩略图的代码(文章+软件)

    具体的实现代码,如下:下面会给简单的说明. 复制代码 代码如下: <?php /* 1. 配置好你的数据库连接 2. 注意数据表名的前缀 默认为dede_ 3. 一定要先备份你的数据库 或备份dede_archives表 如产生损失本人概不负责 */ //数据库连接设置 $ip = "localhost"; //地址 $user = "jb51"; //用户名 $pw = "www.jb51.net"; //密码 $db = "j

  • php多功能图片处理类分享(php图片缩放类)

    复制代码 代码如下: <?php    /**   *  基本图片处理,用于完成图片缩入,水印添加   *  当水印图超过目标图片尺寸时,水印图能自动适应目标图片而缩小   *  水印图可以设置跟背景的合并度  */ /*   使用方法:       自动裁切:       程序会按照图片的尺寸从中部裁切最大的正方形,并按目标尺寸进行缩略 $t--->setSrcImg("img/test.jpg");       $t->setCutType(1);//这一句就OK

  • 让php处理图片变得简单 基于gb库的图片处理类附实例代码下载

    这个类的设计思想借鉴于jQuery,通过连缀方法来操作图片,如: 复制代码 代码如下: $image = new UsaImage(array('filepath'=>'image1.jpg')); //图片图片覆盖一张图片,第二和第三参数为,要放置的x,y位置 $image->Overlap("image99.gif", 10, 10) //以相对位置来覆盖图片,最后一个参数为缩放比例,默认为1 ->Overlap2('image00.gif',array('rig

  • DEDECMS首页调用图片集里的多张图片

    先找到include/common.inc.php文件,把下面代码贴进去(我贴的是我网站上的,具体可根据需要修改): function Getimg($aid,$imgwith,$imgheight) { global $dsql; $imgurls = ''; $row =$dsql->getone( "select imgurls from dede_addonimages where aid='$aid' "); $imgurls= $row['imgurls'];//获取

  • 常用的php图片处理类(水印、等比缩放、固定高宽)分享

    常用的php图片处理类(水印.等比缩放.固定高宽)分享 <?php //PHP 添加水印 & 比例缩略图 & 固定高度 & 固定宽度 类. class Image_process{ public $source; //原图 public $source_width; //原图宽度 public $source_height; //原图高度 public $source_type_id; public $orign_name; public $orign_dirname; //

  • 实现dedecms图集单击图片翻页的功能

    1.为了实现这个功能,我们首先需要获得图片页面的当前页码和总页码 编辑include/inc_archives_view.php文件 (1)找到function ParseDMFields,修改为: function ParseDMFields($pageNo,$ismake=1)      {          $this->NowPage = $pageNo;         //获得当前页面编号          $this->Fields['cpagenum'] = $this->

  • 摘自织梦CMS中的图片处理类

    本文实例讲述了摘自织梦CMS中的图片处理类.分享给大家供大家参考.具体如下: <?php if(!defined('DEDEINC')) exit('dedecms'); /** * 图像处理类 * * @version $Id: image.class.php 1 18:10 2010年7月5日Z tianya $ * @package DedeCMS.Libraries * @copyright Copyright (c) 2007 - 2010, DesDev, Inc. * @licen

  • 解决phpcms更换javascript的幻灯片代码调用图片问题

    今天找到了一个js要放在phpcms上边!但是他的代码是这样的 复制代码 代码如下: var titles = '创顶1|创顶2|创顶3|创顶4'; var imgs='{APP_PATH}cdstyle/images/image1.jpg|{APP_PATH}cdstyle/images/image2.jpg|{APP_PATH}cdstyle/images/image3.jpg|{APP_PATH}cdstyle/images/image4.jpg'; var urls='http://ba

  • php实现的通用图片处理类

    本文实例讲述了php实现的通用图片处理类.分享给大家供大家参考.具体如下: 该图片处理函数功能:缩放.剪切.相框.水印.锐化.旋转.翻转.透明度.反色,处理并保存历史记录的思路:当有图片有改动时自动生成一张新图片,命名方式可以考虑在原图片的基础上加上步骤,例如:图片名称+__第几步. 在一些需要图片高级处理功能的Web应用中,可以参考这个类. <?php class picture { var $PICTURE_URL;//要处理的图片 var $DEST_URL="temp__01.jp

  • PHP编写的图片验证码类文件分享

    适用于自定义的验证码类! <?php /* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ Class Image{ private $img; public $width = 85; pub

  • Java基于装饰者模式实现的图片工具类实例【附demo源码下载】

    本文实例讲述了Java基于装饰者模式实现的图片工具类.分享给大家供大家参考,具体如下: ImgUtil.java: /* * 装饰者模式实现图片处理工具类 * 类似java的io流 - * Img类似低级流可以独立使用 * Press和Resize类似高级流 * 需要依赖于低级流 */ package util; import java.io.File; import java.util.List; /** * 图片工具类(装饰者)和图片(被装饰者)的公共接口 * @author xlk */

  • gd库图片下载类实现下载网页所有图片的php代码

    php代码如下: 复制代码 代码如下: <?php header("Content-type:text/html ; charset=utf-8"); if (!empty($_POST['submit'])){ $url = $_POST['url']; //为了获取相对路径的图片所做的操作 $url_fields = parse_url($url); $main_url = $url_fields['host']; $base_url = substr($url,0,strr

  • asp的通用数据分页类

    (原创)<!--#include file="Conn.asp" --> 通用数据分页类     通用分页类,以后写分页显示数据时就轻松多啦.直接调用此类,然后再Execute即可以取得当前页的所有数据.     此类所做的工作是只取得当前页的数据,和总页数和总记录数等等数据. ASP代码: <% '/*****************************分页显示类************************** '/* 作者:哇哇鱼 '/* 日期:2004年

  • C#图片处理类分享

    本文实例为大家分享了C#图片处理类的具体代码,供大家参考,具体内容如下 using System; using System.Collections; using System.IO; using System.Drawing; using System.Drawing.Imaging; using System.Drawing.Drawing2D; namespace DotNet.Utilities { public class ImageClass { public ImageClass(

  • 非常实用的Android图片工具类

    本文实例为大家分享了Android图片工具类的具体代码,供大家参考,具体内容如下 import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import android.content.Context; import android.grap

  • 功能强大的PHP图片处理类(水印、透明度、旋转)

    非常强大的php图片处理类,可以自定义图片水印.透明度.图片缩放.图片锐化.图片旋转.图片翻转.图片剪切.图片反色. * 图片处理函数功能:缩放.剪切.相框.水印.锐化.旋转.翻转.透明度.反色 * 处理并保存历史记录的思路:当有图片有改动时自动生成一张新图片,命名方式可以考虑在原图片的基础上加上步骤,例如:图片名称+__第几步 具体代码如下: <?php class picture{ var $PICTURE_URL; //要处理的图片 var $DEST_URL = "temp__01

随机推荐