利用php_imagick实现复古效果的方法


Posted in PHP onOctober 18, 2016

介绍

php_imagick是一个可以供PHP调用ImageMagick功能的PHP扩展,使用这个扩展可以使PHP具备和ImageMagick相同的功能。
ImageMagick是一套功能强大、稳定而且免费的工具集和开发包,可以用来读、写和处理超过185种基本格式 的图片文件,包括流行的TIFF, JPEG, GIF, PNG, PDF以及PhotoCD等格式。利用ImageMagick,你可以根据web应用程序的需要动态生成图片, 还可以对一个(或一组)图片进行改变大小、旋转、锐化、减色或增加特效等操作,并将操作的结果以相同格式或其它格式保存。

php_imagick程序示例

1.创建一个缩略图并显示出来

<?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.创建一个目录下的缩略图,并保存

<?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动画图片

<?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实现复古效果的方法

先来看下效果图

利用php_imagick实现复古效果的方法
复古效果展示

要实现以上效果,我们先用Photoshop用以下步骤实现。

打开原图

新建图层,使用颜色#C0FFFF填充后,不透明度设为44%,图层混合模式为柔光

新建图层,使用颜色#000699填充后,不透明设置为48%,图层混合模式为排除

合并图层

用PHP代码,也就只需要按照以上步骤实现即可,代码如下:

//打开图片
$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实现复古效果的方法,文章通过示例代码介绍的还是很详细的,感兴趣的朋友们自己敲敲代码更能方便理解,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

PHP 相关文章推荐
php中截取中文字符串的代码小结
Jul 17 PHP
深入探讨:PHP使用数据库永久连接方式操作MySQL的是与非
Jun 05 PHP
PHP的password_hash()使用实例
Mar 17 PHP
Windows下安装PHP单元测试环境PHPUnit图文教程
Oct 24 PHP
smarty模板引擎之分配数据类型
Mar 30 PHP
php解析字符串里所有URL地址的方法
Apr 03 PHP
PHP Opcache安装和配置方法介绍
May 28 PHP
PHP实现连接设备、通讯和发送命令的方法
Oct 13 PHP
PHP输出XML格式数据的方法总结
Feb 08 PHP
ubutu 16.04环境下,PHP与mysql数据库,网页登录验证实例讲解
Jul 20 PHP
PHP 实现页面静态化的几种方法
Jul 23 PHP
对laravel的session获取与存取方法详解
Oct 08 PHP
php封装的page分页类完整实例
Oct 18 #PHP
php封装的单文件(图片)上传类完整实例
Oct 18 #PHP
Thinkphp实现短信验证注册功能
Oct 18 #PHP
php基于单例模式封装mysql类完整实例
Oct 18 #PHP
php封装的mysqli类完整实例
Oct 18 #PHP
PHP实现文件上传下载实例
Oct 18 #PHP
Yii实现文章列表置顶功能示例
Oct 18 #PHP
You might like
PHP初学者头疼问题总结
2006/10/09 PHP
九个你必须知道而且又很好用的php函数和特点
2013/08/08 PHP
深入理解PHP原理之执行周期分析
2016/06/01 PHP
THINKPHP3.2使用soap连接webservice的解决方法
2017/12/13 PHP
JavaScript中的私有成员
2006/09/18 Javascript
Javascript之旅 对象的原型链之由来
2010/08/25 Javascript
DWZ table的原生分页浅谈
2013/03/01 Javascript
利用jquery.qrcode在页面上生成二维码且支持中文
2014/02/12 Javascript
Jquery方式获取iframe页面中的 Dom元素
2014/05/07 Javascript
一个奇葩的最短的 IE 版本判断JS脚本
2014/05/28 Javascript
node.js中的fs.open方法使用说明
2014/12/17 Javascript
jQuery实现简单二级下拉菜单
2015/04/12 Javascript
微信小程序 点击控件后选中其它反选实例详解
2017/02/21 Javascript
JavaScript下拉菜单功能实例代码
2017/03/01 Javascript
VueJs使用Amaze ui调整列表和内容页面
2017/11/30 Javascript
JS数组splice操作实例分析
2019/10/12 Javascript
javascript 函数的暂停和恢复实例详解
2020/04/25 Javascript
介绍Python中内置的itertools模块
2015/04/29 Python
python检查指定文件是否存在的方法
2015/07/06 Python
在pycharm上mongodb配置及可视化设置方法
2018/11/30 Python
django框架cookie和session用法实例详解
2019/12/10 Python
Python常用模块sys,os,time,random功能与用法实例分析
2020/01/07 Python
基于Python获取照片的GPS位置信息
2020/01/20 Python
Python实现FLV视频拼接功能
2020/01/21 Python
python数据分析工具之 matplotlib详解
2020/04/09 Python
基于打开pycharm有带图片md文件卡死问题的解决
2020/04/24 Python
Python使用socket_TCP实现小文件下载功能
2020/10/09 Python
个人找工作自荐信格式
2013/09/21 职场文书
财务经理岗位职责
2013/11/09 职场文书
中药学自荐信
2014/06/15 职场文书
个人向公司借款协议书
2014/10/09 职场文书
红楼梦读书笔记
2015/06/25 职场文书
高中生军训感言
2015/08/01 职场文书
2016优秀员工先进事迹材料
2016/02/25 职场文书
Python Pandas读取Excel日期数据的异常处理方法
2022/02/28 Python
详解Redis的三种常用的缓存读写策略步骤
2022/05/06 Redis