<?php
$image = (new Image)->newImagick($src);
$image->flopImage()
// ->rollImage(20, 39)
// ->thumbnailImage(600)
->markfFixed($src2,"center") // top-left top-right bottom-left bottom-right
// ->gaussianblur(5,true)
// ->sharpen(10,true)
// ->raise(10,true)
// ->oilpaint(10,true)
// ->spread(10,true)
// ->dobrush($src2,200,250)
// ->rotate(90)
->frame("yellow",10,10,5,true);
echo "<img src='{$image->getBase64Image()}'>");
<?php
class Image extends Base
{
public $image;
public function newImagick($src)
{
$this->image = new \Imagick($src);
return $this;
}
/**
* 图片base64编码
* @return string
*/
public function getBase64Image($image = false)
{
$file = $this->image->getImageBlob();
$type = getimagesizefromstring($file);
$base64 = base64_encode($file);
return 'data:' . $type['mime'] . ';base64,' . $base64;
}
/**
* 图片等比例缩
* @param $width
* @return $this
*/
public function thumbnailImage($width)
{
$srcWH = $this->image->getImageGeometry();
if ($srcWH['width'] > $width) {
$srcW['width'] = $width;
$srcH['height'] = $srcW['width'] / $srcWH['width'] * $srcWH['height'];
} else {
$srcW['width'] = $srcWH['width'];
$srcH['height'] = $srcWH['height'];
}
$this->image->thumbnailImage($srcW['width'], $srcH['height'], true);
return $this;
}
/**
* 图像水平横向翻转
*/
public function flopImage()
{
$this->image->flopImage();
return $this;
}
/**
* 偏置图像
* @param $x
* @param $y
* @return $this
*/
public function rollImage($x, $y)
{
$this->image->rollImage($x, $y);
return $this;
}
/**
* 加水印
* @param $src
* @param $x
* @param $y
* @return $this
* @throws \ImagickException
*/
function mark($src, $x, $y)
{
$composite_object = new \Imagick($src);
$this->image->setImageVirtualPixelMethod(\Imagick::VIRTUALPIXELMETHOD_TRANSPARENT);
$this->image->setImageArtifact('compose:args', "1,0,-0.5,0.5");
$this->image->compositeImage($composite_object, \Imagick::COMPOSITE_MATHEMATICS, $x, $y);
return $this;
}
/**
* 加水印固定
*/
function markfFixed($src, $position = "center")
{
$srcWH = $this->image->getImageGeometry();
$height = $srcWH['height'];
$width = $srcWH['width'];
$image = new \Imagick($src);
$srcWH2 = $image->getImageGeometry();
$height2 = $srcWH2['height'];
$width2 = $srcWH2['width'];
if ($position == 'top-left') {
$x = 0;
$y = 0;
}
if ($position == 'top-right') {
$x = $width - $width2;
$y = 0;
}
if ($position == 'bottom-left') {
$x = 0;
$y = $height - $height2;
}
if ($position == 'bottom-right') {
$x = $width - $width2;
$y = $height - $height2;
}
if ($position == 'center') {
$x = ($width - $width2) / 2;
$y = ($height - $height2) / 2;
}
$composite_object = new \Imagick($src);
$this->image->setImageVirtualPixelMethod(\Imagick::VIRTUALPIXELMETHOD_TRANSPARENT);
$this->image->setImageArtifact('compose:args', "1,0,-0.5,0.5");
$this->image->compositeImage($composite_object, \Imagick::COMPOSITE_MATHEMATICS, $x, $y);
return $this;
}
/**
* 函数说明:模糊处理
* 函数参数:
* $radius:模糊程度,int型
* $apply:表示作用区域,逻辑型,true:局部作用; false:全局作用
* $w,$h,$x,$y:当$apply为true,来确定区域坐标,int型
*/
function gaussianblur($radius, $apply, $x = 0, $y = 0, $w = 0, $h = 0)
{
if ($apply && $x == 0 && $y == 0 && $w == 0 && $h == 0)
$apply = false;
if ($apply) {
$region = $this->image->getImageRegion($w, $h, $x, $y);
$region->blurImage($radius, $radius);
$this->image->compositeImage($region, $region->getImageCompose(), $x, $y);
$region->destroy();
} else {
$this->image->blurImage($radius, $radius);
}
return $this;
}
/**
* 函数说明:锐化处理
* 函数参数:
* $radius:锐化程度,int型
* $apply:表示作用区域,逻辑型,true:局部作用; false:全局作用
* $w,$h,$x,$y:当$apply为true,来确定区域坐标,int型
*/
function sharpen($radius, $apply, $x = 0, $y = 0, $w = 0, $h = 0)
{
if ($apply && $x == 0 && $y == 0 && $w == 0 && $h == 0)
$apply = false;
if ($apply) {
$region = $this->image->getImageRegion($w, $h, $x, $y);
$region->sharpenImage($radius, $radius);
$this->image->compositeImage($region, $region->getImageCompose(), $x, $y);
$region->destroy();
} else {
$this->image->sharpenImage($radius, $radius);
}
return $this;
}
/**
* 函数说明:突起效果
* 函数参数:
* $raise:突起度,int型
* $apply:表示作用区域,逻辑型,true:局部作用; false:全局作用
* $w,$h,$x,$y:当$apply为true,来确定区域坐标,int型
*/
function raise($raise, $apply, $x = 0, $y = 0, $w = 0, $h = 0)
{
if ($apply && $x == 0 && $y == 0 && $w == 0 && $h == 0)
$apply = false;
if ($apply) {
if ($w > (2 * $raise) && $h > (2 * $raise)) {
$region = $this->image->getImageRegion($w, $h, $x, $y);
$region->raiseImage($raise, $raise, 0, 0, true);
$this->image->compositeImage($region, $region->getImageCompose(), $x, $y);
$region->destroy();
}
} else {
$info = $this->image->getImageGeometry();
if ($info["width"] > (2 * $raise) && $info["height"] > (2 * $raise)) {
$this->image->raiseImage($raise, $raise, 0, 0, true);
}
}
return $this;
}
/**
* 函数说明:边框效果
* 函数参数:
* $frame_width:边框宽度,int型
* $frame_height:边框宽度,int型
* $bevel:边框角度,int型
* $color:边框颜色,string型
* $apply:表示作用区域,逻辑型,true:局部作用; false:全局作用
* $w,$h,$x,$y:当$apply为true,来确定区域坐标,int型
*/
function frame($color, $frame_width, $frame_height, $bevel, $apply, $x = 0, $y = 0, $w = 0, $h = 0)
{
if ($apply && $x == 0 && $y == 0 && $w == 0 && $h == 0) {
$apply = false;
}
$framecolor = new \ImagickPixel($color);
if ($apply) {
$region = $this->image->getImageRegion($w, $h, $x, $y);
$region->frameImage($framecolor, $frame_width, $frame_height, $bevel,
$bevel);
$this->image->compositeImage($region, $region->getImageCompose(), $x, $y);
$region->destroy();
} else {
$this->image->frameImage($framecolor, $frame_width, $frame_height, $bevel, $bevel);
}
return $this;
}
/**
* 函数说明:油画效果
* 函数参数:
* $radius:油画效果参数
* $apply:表示作用区域,逻辑型,true:局部作用; false:全局作用
* $w,$h,$x,$y:当$apply为true,来确定区域坐标,int型
*/
function oilpaint($radius, $apply, $x = 0, $y = 0, $w = 0, $h = 0)
{
if ($apply && $x == 0 && $y == 0 && $w == 0 && $h == 0) {
$apply = false;
}
if ($apply) {
$region = $this->image->getImageRegion($w, $h, $x, $y);
$region->oilPaintImage($radius);
$this->image->compositeImage($region, $region->getImageCompose(), $x, $y);
$region->destroy();
} else {
$this->image->oilPaintImage($radius);
}
return $this;
}
/**
* 函数说明:发散效果
* 函数参数:
* $radius:发散效果参数
* $apply:表示作用区域,逻辑型,true:局部作用; false:全局作用
* $w,$h,$x,$y:当$apply为true,来确定区域坐标,int型
*/
function spread($radius, $apply, $x = 0, $y = 0, $w = 0, $h = 0)
{
if ($apply && $x == 0 && $y == 0 && $w == 0 && $h == 0)
$apply = false;
if ($apply) {
$region = $this->image->getImageRegion($w, $h, $x, $y);
$region->spreadImage($radius);
$this->image->compositeImage($region, $region->getImageCompose(), $x, $y);
$region->destroy();
} else {
$this->image->spreadImage($radius);
}
return $this;
}
/**
* 函数说明:合并图片
*/
function dobrush($src, $x, $y)
{
$imagepng = new \Imagick($src);
$imagepng->setImageFormat("png");
$this->image->compositeImage($imagepng, $imagepng->getImageCompose(), $x, $y);
return $this;
}
/**
* 函数说明:旋转图片
* $angle:旋转角度,int型
*/
function rotate($angle)
{
$this->image->rotateImage(new \ImagickPixel(), $angle);
return $this;
}
}
网友评论