使用imagick在PHP中实现各种图像效果实例
imagick是一个功能强大的图像处理库。可以说,翻译是对imagick主要功能的简要介绍,或引进和使用功能的功能,我觉得更实用。
因为我的英语是有限的,所以它被描述得比较流行或者比较接近应用语言。
享受一组炫目的效果:
偏置图像:
实例uff1a
复制代码代码如下所示:
< PHP
ini_set('display_errors ',1);
头('content-type:图像/ JPEG);
图像=新imagick美元(1 .jpg);
$图像-> rollimage(20,39);
回波图像;
>
thumbnailimage($宽度、高度变化美元)大小的图片
例子:
复制代码代码如下所示:
< PHP
ini_set('display_errors ',1);
头('content-type:图像/ JPEG);
图像=新imagick美元(1 .jpg);
$图像-> thumbnailimage(100,0);
回波图像;
>
addnoiseimage(int,int noise_type {美元,美元imagick通道::channel_all });
功能:
向图像添加随机噪声
α干扰素
复制代码代码如下所示:
噪声系数($ noise_type型)
Imagick:: NOISE_UNIFORM (integer)
Imagick::noise_gaussian(整数)
Imagick::noise_multiplicativegaussian(整数)
Imagick::noise_impulse(整数)
Imagick::noise_laplacian(整数)
Imagick::noise_poisson(整数)
通道常量($通道类型)
Imagick::channel_undefined(整数)
Imagick::channel_red(整数)
Imagick::channel_gray(整数)
Imagick::channel_cyan(整数)
Imagick::channel_green(整数)
Imagick::channel_magenta(整数)
Imagick::channel_blue(整数)
Imagick::channel_yellow(整数)
Imagick::channel_alpha(整数)
Imagick::channel_opacity(整数)
Imagick::channel_matte(整数)
Imagick::channel_black(整数)
Imagick::channel_index(整数)
Imagick::channel_all(整数)
实例uff1a
复制代码代码如下所示:
< PHP
ini_set('display_errors ',1);
头('content-type:图像/ JPEG);
图像=新imagick美元(1 .jpg);
$图像-> thumbnailimage(100,0);
$图像-> addnoiseimage(imagick::::noise_poisson,imagick channel_opacity);
回波图像;
>
annotateimage创建文本图像
例子:
复制代码代码如下所示:
< PHP
图像=新imagick(美元);
画=新imagickdraw(美元);
像素=新imagickpixel美元('gray);
$图像->图像(800, 75,$像素);
$像素->设置颜色(黑的);
为绘制->设置字体('bookman-demiitalic);
美元setfontsize画>(30);
图像-> annotateimage美元(合画,10, 45, 0,敏捷的棕色狐狸跳过懒惰的狗);
$图像-> setimageformat('png);
头('content-type:图像/格式);
回波图像;
>
模糊像(浮动美元浮动半径,∑{ int美元,美元通道})
图像模糊滤波的模糊处理
参数:
复制代码代码如下所示:
通道$:
Imagick::channel_undefined(整数)
Imagick::channel_red(整数)
Imagick::channel_gray(整数)
Imagick::channel_cyan(整数)
Imagick::channel_green(整数)
Imagick::channel_magenta(整数)
Imagick::channel_blue(整数)
Imagick::channel_yellow(整数)
Imagick::channel_alpha(整数)
Imagick::channel_opacity(整数)
Imagick::channel_matte(整数)
Imagick::channel_black(整数)
Imagick::channel_index(整数)
Imagick::channel_all(整数)
复制代码代码如下所示:
< PHP
ini_set('display_errors ',1);
头('content-type:图像/ JPEG);
图像=新imagick美元(1 .jpg);
$图像->模糊像(5,3);
回波图像;
>
对borderimage图像边缘处理(混合BorderColor美元美元美元,int int宽度,高度)
例子:
复制代码代码如下所示:
< PHP
ini_set('display_errors ',1);
头('content-type:图像/ JPEG);
图像=新imagick美元(1 .jpg);
颜色=新imagickpixel(美元);
$color->setColor (RGB (220220220));
图像-> borderimage美元(美元的颜色,5,4);
$图像->模糊像(5,5,imagick::channel_green);
回波图像;
>
对charcoalimage图像图形处理(浮动美元浮动美元半径,σ)
参数描述:
半径:越小越薄。
西格玛:墨水越大,反之亦然。
例子:
复制代码代码如下所示:
< PHP
ini_set('display_errors ',1);
头('content-type:图像/ JPEG);
图像=新imagick美元(1 .jpg);
颜色=新imagickpixel(美元);
$颜色->设置颜色(RGB(220220220));
图像-> borderimage美元(美元的颜色,5,4);
$图像-> charcoalimage(0.0001,0.001);
/ / $图像->模糊像(5,5,imagick::channel_green);
回波图像;
>
ChopImage(int,int美元美元的宽度,高度,int x美元,int Y元)
参数描述:删除一定范围的图像区域
我不做参数说明,请看一眼。
混色填充colorizeimage(混合着色混合美元,美元不透明度)
$着色颜色
opacit美元的透明度
例子:
复制代码代码如下所示:
< PHP
*
电影胶片效果
* /
ini_set('display_errors ',1);
头('content-type:图像/ JPEG);
图像=新imagick美元(1 .jpg);
$图像-> negateimage(假);
为图像-> colorizeimage(' # 000 ',1);
回波图像;
>
EmbossImage(浮为半径,浮$∑)
功能:返回灰度三维图像是不好的。
例子:
复制代码代码如下所示:
< PHP
ini_set('display_errors ',1);
头('content-type:图像/ JPEG);
图像=新imagick美元(1 .jpg);
$图像-> embossimage(1,1);
回波图像;
>
(两张效果图)
FlipImage(void)
功能:创建图像反转(垂直翻转)
例子:
复制代码代码如下所示:
< PHP
ini_set('display_errors ',1);
头('content-type:图像/ JPEG);
图像=新imagick美元(1 .jpg);
图像-> flipimage(美元);
回波图像;
>
FlopImage(void)
功能:图像水平水平翻转
复制代码代码如下所示:
< PHP
ini_set('display_errors ',1);
头('content-type:图像/ JPEG);
图像=新imagick美元(1 .jpg);
图像-> flopimage(美元);
回波图像;
>
图像(混合matte_color美元美元美元,int int宽度,高度,int int inner_bevel美元,美元outer_bevel)
功能:创建3D图像边框
参数描述:
matte_color美元:颜色
的inner_bevel美元内斜:框架
outer_bevel:美元的外部边界的倾向
实例uff1a
复制代码代码如下所示:
< PHP
ini_set('display_errors ',1);
头('content-type:图像/ JPEG);
图像=新imagick美元(1 .jpg);
颜色=新imagickpixel(美元);
$颜色->设置颜色(RGB(220220220));
图像->图像美元(美元的颜色,11,11,1,10);
回波图像;
>
注意事项:
$宽度(宽度)不应小于inner_bevel美元(的框架内倾斜)
Imagick::gammaimage(浮γ{ int美元,美元imagick通道::channel_all })
功能:调整图像的灰度系数。
参数描述:
浮点数:灰色系统值
美元imagick::channel_all通道默认
Imagick::channel_all
例1:
复制代码代码如下所示:
< PHP
ini_set('display_errors ',1);
头('content-type:图像/ JPEG);
图像=新imagick美元(1 .jpg);
图像-> gammaimage美元(30);
回波图像;
>
例2:
复制代码代码如下所示:
< PHP
ini_set('display_errors ',1);
头('content-type:图像/ JPEG);
图像=新imagick美元(1 .jpg);
图像-> gammaimage美元(30);
回波图像;
>
GaussianBlurImage(浮为半径,浮∑{ int美元,美元imagick通道::channel_all })
功能:高斯模糊处理与高斯模糊的照片相似。
参数描述:
浮动$半径:高斯的模糊半径,像素,不包括中央像素。
浮点数:高斯的标准偏差,以像素为单位,我认为这个参数是最重要的。
通道:图像颜色模式。
复制代码代码如下所示:
< PHP
ini_set('display_errors ',1);
头('content-type:图像/ JPEG);
图像=新imagick美元(1 .jpg);
$图像-> gaussianblurimage(30,3);
回波图像;
>
图像(浮blackpoint美元,美元浮动浮动γ,美元{ int白点相匹配,imagick::信=美元channel_all })
功能:调整图像颜色(调整图像的水平)
参数描述
复制代码代码如下所示:
< PHP
ini_set('display_errors ',1);
头('content-type:图像/ JPEG);
图像=新imagick美元(1 .jpg);
$图像->图像(4.4.4);
回波图像;
>
例2:
复制代码代码如下所示:
< PHP
ini_set('display_errors ',1);
头('content-type:图像/ JPEG);
图像=新imagick美元(1 .jpg);
$图像->图像(200200200,imagick::channel_green);
回波图像;
>
magnifyimage(void)
功能描述:一个简单的图像等于2倍放大(是一种方便的方法,比例缩放图像的两倍)。
例子:
复制代码代码如下所示:
< PHP
ini_set('display_errors ',1);
头('content-type:图像/ JPEG);
图像=新imagick美元(1 .jpg);
($图像-> magnifyimage);
回波图像;
>
medianfilterimage(浮为半径)
功能:特殊的过滤器是一个有点像PS图象处理软件着色刀滤波器
复制代码代码如下所示:
< PHP
ini_set('display_errors ',1);
头('content-type:图像/ JPEG);
图像=新imagick美元(1 .jpg);
颜色=新imagickpixel(美元);
$颜色->设置颜色(RGB(220220220));
图像-> medianfilterimage美元(5);
回波图像;
>
minifyimage(void)
功能:图形小双打(按比例将图像缩放到其大小的一半)
例子:
复制代码代码如下所示:
< PHP
ini_set('display_errors ',1);
头('content-type:图像/ JPEG);
图像=新imagick美元(1 .jpg);
图像-> minifyimage(美元);
回波图像;
>
modulateimage(浮动美元美元浮动浮动亮度,饱和度,色调美元)
功能:控制图像的亮度、饱和度和色调。
参数描述:
亮度:亮度
浮点$饱和:饱和
浮动色相
例1:
复制代码代码如下所示:
< PHP
ini_set('display_errors ',1);
头('content-type:图像/ JPEG);
图像=新imagick美元(1 .jpg);
图像-> modulateimage美元(1001100);
回波图像;
>
例2:
复制代码代码如下所示:
< PHP
ini_set('display_errors ',1);
头('content-type:图像/ JPEG);
图像=新imagick美元(1 .jpg);
图像-> modulateimage美元(2501250);
回波图像;
>
MotionBlurImagemotionBlurImage(浮为半径,浮$西格玛,浮角{ int美元,美元imagick通道::channel_default })
功能:模拟运动模糊(模拟运动模糊),一个运动模糊过滤器类似PS图象处理软件的功能
参数描述:
浮动半径:高斯半径,而不是中心像素。
浮点数:标准偏差的高斯,以像素为单位。{重要参数}
浮动角度:模糊角度。
int $通道:图像的色彩模式,默认的是imagick::channel_default
例1:
复制代码代码如下所示:
< PHP
ini_set('display_errors ',1);
头('content-type:图像/ JPEG);
图像=新imagick美元(1 .jpg);
颜色=新imagickpixel(美元);
$颜色->设置颜色(RGB(220220220));
$图像-> motionblurimage(61,10,10);
回波图像;
>
例2:
复制代码代码如下所示:
< PHP
ini_set('display_errors ',1);
头('content-type:图像/ JPEG);
图像=新imagick美元(1 .jpg);
颜色=新imagickpixel(美元);
$颜色->设置颜色(RGB(220220220));
图像-> motionblurimage美元(20110100);
回波图像;
>
OilPaintImage(浮为半径):
功能描述:模拟油画
例子:
复制代码代码如下所示:
< PHP
ini_set('display_errors ',1);
头('content-type:图像/ JPEG);
图像=新imagick美元(1 .jpg);
颜色=新imagickpixel(美元);
$颜色->设置颜色(RGB(220220220));
图像-> oilpaintimage美元(1);
回波图像;
>
radialblurimage(浮角{ int美元,美元imagick通道::channel_all })
功能:径向模糊(径向模糊图像)
复制代码代码如下所示:
< PHP
ini_set('display_errors ',1);
头('content-type:图像/ JPEG);
图像=新imagick美元(1 .jpg);
颜色=新imagickpixel(美元);
$颜色->设置颜色(RGB(220220220));
图像-> radialblurimage美元(30);
回波图像;
>
RaiseImage(int,int美元美元的宽度,高度,int x美元,int Y元,为提高)
功能描述:创建3D图像按钮(创建一个模拟的3D按钮效果)
复制代码代码如下所示:
< PHP
ini_set('display_errors ',1);
头('content-type:图像/ JPEG);
图像=新imagick美元(1 .jpg);
颜色=新imagickpixel(美元);
$颜色->设置颜色(RGB(220220220));
$图像-> raiseimage(10,10,3,5,6);
回波图像;
>
附1:需要减少图片的大小,添加半透明边框,读取EXIF信息,并显示在指定的图片。
复制代码代码如下所示:
$宽= '500;
随身高成正美元= '700 '; / /调整大小允许的最大宽度和高度的图片集
可用美元= '。 / / / b.jpg ';定义一个图像文件的路径
/ / $图像-> writeimage('。 / b.jpg .bak); / /这张照片你可以备份
myimage =新imagick美元(合源文件); / /读取图像文件
exifobject = my_exif美元(美元myimage); / /写函数来读取exif信息(拍摄数据),EXIF信息,根据自己的需要设置,返回的对象
/ / $ myimage -> setimageformat('jpeg '); / /图片JPG格式
myimage美元-> setcompressionquality(100); / /套JPG压缩质量,1 - 100
($ myimage ->增强图像); / /噪声
sourcewidth美元=美元myimage -> getimagewidth(); / /读取原始图像的大小
如果($ sourcewidth > $宽)
{
myimage美元->图像(美元与宽、随身高成正美元,true); / /调整图片大小
}
myimage美元-> raiseimage(8, 8, 0,0, 1); / /加半透明边框
resizewidth美元=($ myimage -> getimagewidth); / /读调整后的图片大小
resizeheight美元=美元myimage -> getimageheight();
$缺点=新(imagickdraw); / /实例化一个绘画对象,绘制半透明的黑色背景信息,EXIF
缺点- > setfillcolor美元(新imagickpixel(' # 000000)); / /黑色设置填充颜色
缺点- > setfillopacity美元(0.6); / /填充不透明度为0.6参数0.1-1,透明度1。
缺点- >矩形美元(美元resizewidth / 2 - 190美元- 50美元,resizeheight,resizewidth / 2 + 190,resizeheight美元12); / /矩形绘图参数,分别的X,Y,X,Y的左上角,右下角
myimage美元-> DrawImage(美元退税); / /确认的矩形框架图的绘制
为画=新(imagickdraw); / /实例化一个图形对象,绘制文本信息嵌入EXIF图片
为绘制->设置字体('。 / xianhei。TTF '); / /设置文本的字体,TTF或TTC字体可以绝对或相对
为绘制-> setfontsize(11); / /集名称
为绘制-> settextalignment(2); / /文本对齐2。
为绘制-> setfillcolor(' # ffffff '); / /文字颜色
myimage美元-> annotateimage(合画,resizewidth美元/ 2美元- 39, 0美元,resizeheight,exifobject -> row1); / /画第一行文本,中心
myimage美元-> annotateimage(合画,resizewidth美元/ 2美元- 27, 0美元,resizeheight,exifobject -> row2); / /绘制文本的第二行,。
myimage美元-> annotateimage(合画,resizewidth美元/ 2美元- 15, 0美元,resizeheight,exifobject -> row3; / /)绘制文本第三行,。
用头部输出图像
头('content-type:图像/ JPEG '); / / PHP文件输出MIME类型是JPEG图片
echo $ myimage; / /在当前的PHP页面输出图片
/ / $图像-> writeimage('。 /新.jpg); / /如果图像不需要在当前的PHP程序的输出,用图像到磁盘功能,以上设置也可以删除页眉
myimage美元->明确();
($ myimage ->破坏); / /释放资源
/ / write functions to read EXIF information, return the object
功能my_exif($ myimage)
{
exifarray美元=阵列('exif:模式= 'exif:datetimeoriginal= > '未知','未知','未知' = > 'exif:曝光软体,'exif:fnumber= 0 / 10,'exif:时间= 0 / 10,'exif:isospeedratings= >未知',
的EXIF:MeteringMode = > 'exif:闪光= > '未知','闪光','未知' = 'exif:焦距,'exif:exifimagewidth= 'exif:exifimagelength= > '未知','未知'); / /初始化信息,防止误操作的发生无法读取照片的EXIF信息
exifarray美元=美元myimage -> getimageproperties(EXIF:*); / /读取存储在$ exifarray阵列图像的EXIF信息。
如果你需要显示原始数组 / /可以使用print_r($ exifarray);
$ R -> row1 =相机。exifarray美元'exif:{模型};
$ R -> row1 = r -> row1。拍摄时间。exifarray美元{ 'exif:datetimeoriginal};
开关($ exifarray { 'exif:曝光软体的})
{
案例1:
exifarray美元{ 'exif:曝光软体} =手动(M);
中断;手动控制
案例2:
exifarray美元{ 'exif:曝光软体} = 程序自动(P);
中断;程序正常
案例3:
exifarray美元{ 'exif:曝光软体} =光圈优先(A,AV);
中断;光圈优先
案例4:
exifarray美元{ 'exif:曝光软体} =快门优先(S,电视);
中断;快门优先
案例5:
exifarray美元{ 'exif:曝光软体} =慢快门;
中断;程序创新(慢程序)
案例6:
exifarray美元{ 'exif:曝光软体} =运动模式;
中断;程序动作(高速程序)
案例7:
exifarray美元{ 'exif:曝光软体} =画像;
打断
案例8:
exifarray美元{ 'exif:曝光软体} =风景;
中断;
违约:
exifarray美元{ 'exif:曝光软体} =其他;
}
$ R -> row1 = r -> row1。模式。exifarray美元{ 'exif:曝光软体};
exifarray美元{ 'exif:fnumber} =(爆炸,exifarray美元数量的快速增加的'exif:{ });
exifarray美元{ 'exif:fnumber} = { 'exif:exifarray美元数量的快速增加的} { 0 } / $ exifarray { 'exif:fnumber} { 1 };
$ R -> row2 =光圈:F /。exifarray美元数量的快速增加的'exif:{ };
exifarray美元{ 'exif:时间的} =(爆炸,exifarray美元'exif时间:{ });
如果(($ exifarray { 'exif:时间的} { 0 } / $ exifarray { 'exif:时间的} { 1 })> = 1)
{
exifarray美元{ 'exif:时间的} = sprintf(%。1fs
别的}
{
exifarray美元{ 'exif:时间的} = sprintf(1 / % DS
}
$ R -> row2 = r -> row2。快门。exifarray美元'exif时间:{ };
$ R -> row2 = r -> row2。国际标准化组织。exifarray美元{ 'exif:isospeedratings};
exifarray美元{ 'exif:exposurebiasvalue} =爆炸( /
exifarray美元{ 'exif:exposurebiasvalue} = sprintf((% 1.1fev),((浮动)$ exifarray { 'exif:exposurebiasvalue} { 0 } / $ exifarray { 'exif:exposurebiasvalue} { 1 }×100)/ 100)。
如果((浮动)$ exifarray { 'exif:exposurebiasvalue} > 0)
{
exifarray美元{ 'exif:exposurebiasvalue} =+。exifarray美元{ 'exif:exposurebiasvalue};
}
$ R -> row2 = r -> row2。补偿。exifarray美元{ 'exif:exposurebiasvalue};
开关($ exifarray 'exif:{ MeteringMode })
{
案例0:
exifarray美元'exif:{ MeteringMode } =未知;
打破;
案例1:
exifarray美元'exif:{ MeteringMode } =矩阵;
打破;
案例2:
exifarray美元'exif:{ MeteringMode } =焦点;
打破;
案例3:
exifarray美元'exif:{ MeteringMode } =点测光;
打破;
案例4:
exifarray美元'exif:{ MeteringMode } =多点光测量;
打破;
违约:
exifarray美元'exif:{ MeteringMode } =其他;
}
$ R -> row2 = r -> row2。光度法。exifarray美元'exif:{ MeteringMode };
开关($ exifarray { 'exif:闪光的})
{
案例1:
exifarray美元{ 'exif:闪光的} =打开闪光灯;
打破;
}
$ R -> row2 = r -> row2。美元exifarray { 'exif:闪光。};
如果($ exifarray { 'exif:focallengthin35mmfilm})
{
$ R -> row3 =等效焦距:'。exifarray美元{ 'exif:focallengthin35mmfilm}。mm;
别的}
{
exifarray美元{ 'exif:焦距的} =爆炸( /
exifarray美元{ 'exif:焦距的} = sprintf(% 4.1fmm
$ R -> row3 =焦距:'。exifarray美元{ 'exif:焦距};
}
$ R -> row3 = r - >在第3行。原始像素。exifarray美元{ 'exif:exifimagewidth x'}。exifarray美元{ 'exif:exifimagelength}。'px;
如果($ exifarray { 'exif:软件})
{
$ R -> row3 = r - >在第3行。后来。exifarray美元{ 'exif:软件};
}
返回$ r;
}
附2:处理图片水印
复制代码代码如下所示:
< PHP
获取水印图像
十元=新imagick(罗。png);
罗美元-> setimageresolution(0.01,0.03);
/ /创建一个imagick对象,并获得源图
我的新imagick美元=(old_large_img_2 .jpg);
获取源图像的宽度和高度
srcwh美元=美元-> getimagegeometry(IM);
图片缩放比例/宽度和高度设置
如果($ srcwh { 'width} > 710){
美元'width} = 710 SRCW {;
等所有'height} = {美元美元/ 'width'} SRCW { } { 'width srcwh美元的美元srcwh { 'height};
其他{ }
'width} = { $ SRCW美元'widthsrcwh { };
等所有'height} = {美元美元'heightsrcwh { };
}
按照缩放比例
我thumbnailimage美元->($ SRCW { 'width},{SRCH美元'height },真的);
创建一个缩略图大小的彩色图片
画布=新imagick(美元);
$帆布->景新($ SRCW { 'width},{ } 'height SRCH美元,,'jpg '); / /粉红色,布莱克
添加水印
$我->完成(合罗,imagick::composite_over SRCW { 'width'},美元280,美元'height SRCH {'} - 77);
美元setcompressionquality画布>(91);
带有图片
$帆布->完成(合我,imagick::composite_over,0, 0);
输出画面
页眉(内容类型:图像);
画布;
生成图像
$帆布-> writeimage(test_img / old_large_img_2_96 .jpg);
>