利用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 a simple smtp class
Nov 26 PHP
destoon二次开发常用数据库操作
Jun 21 PHP
php实现根据词频生成tag云的方法
Apr 17 PHP
又拍云异步上传实例教程详解
Apr 19 PHP
使用php从身份证号中获取一系列线索(星座、生肖、生日等)
May 11 PHP
php判断用户是否关注微信公众号
Jul 22 PHP
thinkphp验证码的实现(form、ajax实现验证)
Jul 28 PHP
php使用glob函数遍历文件和目录详解
Sep 23 PHP
PHP 7安装使用体验之性能大提升,兼容性强,扩展支持不够(升级PHP要谨慎)
Jul 27 PHP
php生成条形码的图片的实例详解
Sep 13 PHP
PHP+ajax实现二级联动菜单功能示例
Aug 10 PHP
详解PHP PDO简单教程
May 28 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修改Linux或Unix口令的方法分享
2012/01/30 PHP
浅析PHP绘图技术
2013/07/03 PHP
微信公众平台实现获取用户OpenID的方法
2015/04/15 PHP
Zend Framework动作助手Json用法实例分析
2016/03/05 PHP
PHP调试及性能分析工具Xdebug详解
2017/02/09 PHP
ThinkPHP框架整合微信支付之Native 扫码支付模式一图文详解
2019/04/09 PHP
js老生常谈之this,constructor ,prototype全面解析
2016/04/05 Javascript
学习JavaScript图片预加载模块
2016/11/07 Javascript
jquery获取easyui日期控件的值实现方法
2016/11/09 Javascript
Vue不能检测到Object/Array更新的情况的解决
2018/06/26 Javascript
jQuery AJAX 方法success()后台传来的4种数据详解
2018/08/08 jQuery
elementUI中Table表格问题的解决方法
2018/12/04 Javascript
jQuery实现B2B网站后台管理系统侧导航
2020/07/08 jQuery
Vue3配置axios跨域实现过程解析
2020/11/25 Vue.js
python中合并两个文本文件并按照姓名首字母排序的例子
2014/04/25 Python
学习python中matplotlib绘图设置坐标轴刻度、文本
2018/02/07 Python
python修改list中所有元素类型的三种方法
2018/04/09 Python
Python实现ping指定IP的示例
2018/06/04 Python
pandas将numpy数组写入到csv的实例
2018/07/04 Python
Python面向对象程序设计OOP深入分析【构造函数,组合类,工具类等】
2019/01/05 Python
python实现QQ空间自动点赞功能
2019/04/09 Python
基于python实现的百度新歌榜、热歌榜下载器(附代码)
2019/08/05 Python
python tkinter图形界面代码统计工具(更新)
2019/09/18 Python
numpy实现神经网络反向传播算法的步骤
2019/12/24 Python
使用Puppeteer爬取微信文章的实现
2020/02/11 Python
python 如何引入协程和原理分析
2020/11/30 Python
如何开发一款堪比APP的微信小程序(腾讯内部团队分享)
2016/12/22 HTML / CSS
使用html2canvas.js实现页面截图并显示或上传的示例代码
2018/12/18 HTML / CSS
法国时尚品牌乐都特瑞士站:La Redoute瑞士
2016/09/05 全球购物
会计的岗位职责
2014/03/15 职场文书
幼儿园感恩节活动方案
2014/10/06 职场文书
中学教师个人总结
2015/02/10 职场文书
2015年社区综治工作总结
2015/04/21 职场文书
2015年绩效考核工作总结
2015/05/23 职场文书
小学课改工作总结
2015/08/13 职场文书
vue数据字典取键值项目的字典问题
2022/04/12 Vue.js