Class SaeImage

Description

SAE图像处理class 可对2M以下大小的图像进行处理

  1.  $f new SaeFetchurl();
  2.  $img_data $f->fetch'http://ss7.sinaimg.cn/bmiddle/488efcbbt7b5c4ae51ca6&690' );
  3.  $img new SaeImage();
  4.  $img->setData$img_data );
  5.  $img->resize(200)// 等比缩放到200宽
  6.  $img->flipH()// 水平翻转
  7.  $img->flipV()// 垂直翻转
  8.  $new_data $img->exec()// 执行处理并返回处理后的二进制数据
  9.  // 或者可以直接输出
  10.  $img->exec'jpg' true );
  11.  
  12.  //图片处理失败时输出错误码和错误信息
  13.  if ($new_data === false)
  14.          var_dump($mail->errno()$mail->errmsg());

错误码参考:

  • errno: 0 成功
  • errno: 3 参数错误
  • errno: 500 服务内部错误
  • errno: 999 未知错误
  • errno: 403 权限不足或超出配额

  • author: lijun

Located in /saeimage.class.php (line 43)

SaeObject
   |
   --SaeImage
Method Summary
SaeImage __construct ([mixed $img_data = ""])
bool annotate (string $txt, [float $opacity = 0.5], [constant $gravity = SAE_Static], [array $font = array("name"=>SAE_SimSun, "size"=>15, "weight"=>300, "color"=>"black")])
void clean ()
bool composite (int $width, int $height, [string $color = "black"])
bool crop ([float $lx = 0.25], [float $rx = 0.75], [float $by = 0.25], [float $ty = 0.75])
string errmsg ()
int errno ()
mixed exec ([string $format = "jpg"], [bool $display = false])
bool flipH ()
bool flipV ()
array getImageAttr ()
bool improve ()
bool resize ([int $width = 0], [int $height = 0])
bool resizeRatio ([float $ratio = 0.5])
bool rotate ([int $degree = 90])
bool setAuth (string $accesskey, string $secretkey)
bool setData (string $img_data)
Methods
Constructor __construct (line 76)

构造SaeImage对象

SaeImage __construct ([mixed $img_data = ""])
  • mixed $img_data: img_data参数可以为二进制图片数据,也可以是用于composite图片合成的数组,数组格式:
                  array(array('blob1',x1,y1,opacity1,anchor1),
                    array('blob2',x2,y2,opacity2,anchor2),
                    array('blob3',x3,y3,opacity3,anchor3)
                          );
    当合并(composite)图片时,$img_data必须设定
annotate (line 339)

添加文字注解,可用于文字水印

  • author: Lijun
  • access: public
bool annotate (string $txt, [float $opacity = 0.5], [constant $gravity = SAE_Static], [array $font = array("name"=>SAE_SimSun, "size"=>15, "weight"=>300, "color"=>"black")])
  • string $txt: 必须为utf8编码
  • float $opacity: 设置不透明度
  • constant $gravity: 设置文字摆放位置, SAE_NorthWest,SAE_North,SAE_NorthEast,SAE_West, SAE_Center,SAE_East,SAE_SouthWest,SAE_South,SAE_SouthEast,SAE_Static
  • array $font: 字体数组可以设置如下属性:
        name,常量,字体名称,如果需要添加中文注解,请使用中文字体,否则中文会显示乱码。
          支持的字体:SAE_SimSun(宋体,默认)、SAE_SimKai(楷体)、SAE_SinHei(正黑)、SAE_Arial
        weight,字体宽度,int
        size,字体大小,int
        color,字体颜色,例如:"blue", "#0000ff", "rgb(0,0,255)"等,默认为"black";
clean (line 170)

将对象的数据重新初始化,用于多次重用一个SaeImgae对象

  1.  $img new SaeImage$bin );
  2.  $img->resize(100);
  3.  $data1 $img->exec();
  4.  $img->clean();
  5.  $img->setData$bin2 );
  6.  $img->resize(300);
  7.  $data2 $img->exec();

  • author: Lijun
  • access: public
void clean ()
composite (line 473)

图片合成,可以进行多张图片的合成,也可以做图片水印用

 注意composite方法在和其它图片处理方法一起使用时,composite必须第一个被调用
 在图片合成时,初始化对象传递imageData数据需要是一个二维数组。
数组中的每个成员也是数组,需要包含5个元素:
  • 表示图像数据的blob字符串 (blob string)
  • 表示在画布上放置图像时相对锚点位置的 x 偏移的像素数(可能为负)
  • 表示在画布上放置图像时相对锚点位置的 y 偏移的像素数(可能为负)
  • 表示图像不透明度(opacity)的浮点数,在 0.0 至 1.0 之间(包括 0.0 和 1.0)0表示全透明,1表示最不透明。
  • 画布上锚点的位置,是以下之一:
    	 SAE_TOP_LEFT SAE_TOP_CENTER SAE_TOP_RIGHT SAE_CENTER_LEFT SAE_CENTER_CENTER
    	 SAE_CENTER_RIGHT SAE_BOTTOM_LEFT SAE_BOTTOM_CENTER SAE_BOTTOM_RIGHT
注意上面的x偏移和y偏移,和锚点位置有关,如果选择了锚点TOP_RIGHT,
则x和y的偏移是指该图片的TOP_RIGHT(右上角)相对于画布的右上角的偏移;
但如果选择BOTTOM_LEFT(左下角)为锚点,则x/y偏移就是指该图片的左下角
相对于画布的左下角的偏移量。
偏移的正负同数学中的象限规定。
图片的放置顺序同数组中出现的顺序

  1.  //从网络上抓取要合成的多张图片
  2.  $img1 file_get_contents('http://ss2.sinaimg.cn/bmiddle/53b05ae9t73817f6bf751&690');
  3.  $img2 file_get_contents('http://timg.sjs.sinajs.cn/miniblog2style/images/common/logo.png');
  4.  $img3 file_get_contents('http://i1.sinaimg.cn/home/deco/2009/0330/logo_home.gif');
  5.  
  6.  //实例化SaeImage并取得最大一张图片的大小,稍后用于设定合成后图片的画布大小
  7.  $img new SaeImage$img1 );
  8.  $size $img->getImageAttr();
  9.  
  10.  //清空$img数据
  11.  $img->clean();
  12.  
  13.  //设定要用于合成的三张图片(如果重叠,排在后面的图片会盖住排在前面的图片)
  14.  $img->setDataarray(
  15.  array$img1001SAE_TOP_LEFT ),
  16.  array$img2000.5SAE_BOTTOM_RIGHT ),
  17.  array$img3001SAE_BOTTOM_LEFT ),
  18.  ) );
  19.  
  20.  //执行合成
  21.  $img->composite($size[0]$size[1]);
  22.  
  23.  //输出图片
  24.  $img->exec('jpg'true);

  • author: Lijun
  • access: public
bool composite (int $width, int $height, [string $color = "black"])
  • int $width: 设置画布宽度
  • int $height: 设置画布高度
  • string $color: 设置画布颜色
crop (line 272)

对图片进行裁剪

  • author: Lijun
  • access: public
bool crop ([float $lx = 0.25], [float $rx = 0.75], [float $by = 0.25], [float $ty = 0.75])
  • float $lx: x起点(百分比模式,1为原图大小,如0.25)
  • float $rx: x终点(百分比模式,1为原图大小,如0.75)
  • float $by: y起点(百分比模式,1为原图大小,如0.25)
  • float $ty: y终点(百分比模式,1为原图大小,如0.75)
errmsg (line 111)

返回错误信息

  • author: Lijun
  • access: public
string errmsg ()
errno (line 121)

返回错误编号

  • author: Lijun
  • access: public
int errno ()
exec (line 371)

进行图片处理操作

  • return: 若设置$display为true,返回void,否则返回图片二进制数据
  • author: Lijun
  • access: public
mixed exec ([string $format = "jpg"], [bool $display = false])
  • string $format: 图片格式,支持gif和jpg
  • bool $display: 是否直接输出,false:不输出,true:输出,默认false
flipH (line 302)

水平翻转

  • author: Lijun
  • access: public
bool flipH ()
flipV (line 314)

垂直翻转

  • author: Lijun
  • access: public
bool flipV ()
getImageAttr (line 131)

取得图像属性

  • return: 错误时返回false
  • author: Lijun
  • access: public
array getImageAttr ()
improve (line 357)

去噪点,改善图片质量,通常用于exec之前

  • author: Lijun
  • access: public
bool improve ()
resize (line 236)

缩放图片,只指定width或者height时,将进行等比缩放

  • author: Lijun
  • access: public
bool resize ([int $width = 0], [int $height = 0])
  • int $width
  • int $height
resizeRatio (line 251)

按比例缩放.1为原大小

  • author: Lijun
  • access: public
bool resizeRatio ([float $ratio = 0.5])
  • float $ratio
rotate (line 289)

顺时针旋转图片

  • author: Lijun
  • access: public
bool rotate ([int $degree = 90])
  • int $degree: 旋转度数(0 - 360)
setAuth (line 186)

设置key.

只有使用其他应用的key时才需要调用

  • author: Lijun
  • access: public
bool setAuth (string $accesskey, string $secretkey)
  • string $accesskey
  • string $secretkey
setData (line 202)

设置要处理的图片二进制数据或数组,格式同构造函数的img_data参数

  • author: Lijun
  • access: public
bool setData (string $img_data)
  • string $img_data

Documentation generated on Wed, 11 Aug 2010 17:34:51 +0800 by phpDocumentor 1.4.3