介绍
php_imagick是一个可以供php调用imagemagick功能的php扩展,使用这个扩展可以使php具备和imagemagick相同的功能。
imagemagick是一套功能强大、稳定而且免费的工具集和开发包,可以用来读、写和处理超过185种基本格式 的图片文件,包括流行的tiff, jpeg, gif, png, pdf以及photocd等格式。利用imagemagick,你可以根据web应用程序的需要动态生成图片, 还可以对一个(或一组)图片进行改变大小、旋转、锐化、减色或增加特效等操作,并将操作的结果以相同格式或其它格式保存。
php_imagick程序示例
1.创建一个缩略图并显示出来
1
2
3
4
5
6
7
|
<?php
header( 'content-type: image/jpeg' );
$image = new imagick( 'image.jpg' );
// if 0 is provided as a width or height parameter,// aspect ratio is maintained
$image ->thumbnailimage(100, 0);
echo $image ;
?>
|
2.创建一个目录下的缩略图,并保存
1
2
3
4
5
6
7
8
|
<?php
$images = new imagick( glob ( 'images/*.jpg' ));
foreach ( $images as $image ) {
// providing 0 forces thumbnailimage to maintain aspect ratio
$image ->thumbnailimage(1024,0);
}
$images ->writeimages();
?>
|
3.缩略gif动画图片
1
2
3
4
5
6
7
8
9
10
11
12
|
<?php
/* create a new imagick object and read in gif */
$im = new imagick( "example.gif" );
/* resize all frames */
foreach ( $im as $frame ) {
/* 50x50 frames */
$frame ->thumbnailimage(50, 50);
/* set the virtual canvas to correct size */
$frame ->setimagepage(50, 50, 0, 0);
} /* notice writeimages instead of writeimage */
$im ->writeimages( "example_small.gif" , true);
?>
|
利用php_imagick实现复古效果的方法
先来看下效果图
复古效果展示
要实现以上效果,我们先用photoshop用以下步骤实现。
打开原图
新建图层,使用颜色#c0ffff填充后,不透明度设为44%,图层混合模式为柔光
新建图层,使用颜色#000699填充后,不透明设置为48%,图层混合模式为排除
合并图层
用php代码,也就只需要按照以上步骤实现即可,代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
//打开图片
$im = new imagick( './hebe.jpg' );
//新建图层,使用颜色`#c0ffff`填充后,不透明度设为`44%`
$layer = new imagick();
$layer ->newimage( $im ->getimagewidth(), $im ->getimageheight(), '#c0ffff' );
$layer ->setimageopacity (0.44);
//叠加到原图上,图层混合模式为`柔光`
$im ->compositeimage( $layer , imagick::composite_softlight, 0, 0);
//新建图层,使用颜色`#000699`填充后,不透明设置为`48%`
$layer = new imagick();
$layer ->newimage( $im ->getimagewidth(), $im ->getimageheight(), '#000699' );
$layer ->setimageopacity (0.48);
//叠加到原图上,图层混合模式为`排除`
$im ->compositeimage( $layer , imagick::composite_exclusion, 0, 0);
//完成!
$im ->writeimage( './vintage.jpg' );
|
总结
以上就是利用php_imagick实现复古效果的方法,文章通过示例代码介绍的还是很详细的,感兴趣的朋友们自己敲敲代码更能方便理解,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。