利用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程序之die调试法 快速解决错误
Sep 17 PHP
如何利用php array_multisort函数 对数据库结果进行复杂排序
Jun 08 PHP
浅析ThinkPHP中execute和query方法的区别
Jun 13 PHP
php支付宝接口用法分析
Jan 04 PHP
PHP批量去除BOM头代码分享
Jun 26 PHP
PHP读书笔记_运算符详解
Jul 01 PHP
Yii视图操作之自定义分页实现方法
Jul 14 PHP
CI框架表单验证实例详解
Nov 21 PHP
thinkPHP数据库增删改查操作方法实例详解
Dec 06 PHP
PHP基于自定义类随机生成姓名的方法示例
Aug 05 PHP
PHP调用微博接口实现微博登录的方法示例
Sep 22 PHP
thinkPHP5框架实现多数据库连接,跨数据连接查询操作示例
May 29 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中如何直接执行SHELL
2013/06/28 PHP
php while循环得到循环次数
2013/10/26 PHP
学习php设计模式 php实现装饰器模式(decorator)
2015/12/07 PHP
PHP获取用户访问IP地址的5种方法
2016/05/16 PHP
javascript实现轮显新闻标题链接
2007/08/13 Javascript
jQuery与其它库冲突的解决方法
2010/06/25 Javascript
QUnit jQuery的TDD框架
2010/11/04 Javascript
用Javascript评估用户输入密码的强度实现代码
2011/11/30 Javascript
js点击页面其它地方将某个显示的DIV隐藏
2012/07/12 Javascript
js控制表单奇偶行样式的简单方法
2013/07/31 Javascript
seajs中模块的解析规则详解和模块使用总结
2014/03/12 Javascript
jQuery实现购物车表单自动结算效果实例
2015/08/10 Javascript
以jQuery中$.Deferred对象为例讲解promise对象是如何处理异步问题
2015/11/13 Javascript
js微信分享API
2020/10/11 Javascript
javascript动画之磁性吸附效果篇
2016/12/09 Javascript
jQuery插件echarts实现的多柱子柱状图效果示例【附demo源码下载】
2017/03/04 Javascript
Angularjs在360兼容模式下取数据缓存问题的解决办法
2017/06/22 Javascript
Vue实现侧边菜单栏手风琴效果实例代码
2018/05/31 Javascript
小程序视频列表中视频的播放与停止的示例代码
2018/07/20 Javascript
解决ng-repeat产生的ng-model中取不到值的问题
2018/10/02 Javascript
小程序测试后台服务的方法(ngrok)
2019/03/08 Javascript
详解用async/await来处理异步
2019/08/28 Javascript
python实现简单温度转换的方法
2015/03/13 Python
Linux 下 Python 实现按任意键退出的实现方法
2016/09/25 Python
tensorflow输出权重值和偏差的方法
2018/02/10 Python
Python设计模式之建造者模式实例详解
2019/01/17 Python
Opencv 图片的OCR识别的实战示例
2021/03/02 Python
法国时尚品牌乐都特瑞士站:La Redoute瑞士
2016/09/05 全球购物
希尔顿酒店中国网站:Hilton中国
2017/03/11 全球购物
教师求职推荐信范文
2013/11/20 职场文书
日化店促销方案
2014/03/26 职场文书
个人先进事迹材料
2014/12/29 职场文书
端午节寄语2015
2015/03/23 职场文书
2015年社区综治宣传月活动总结
2015/03/25 职场文书
详解Python类和对象内容
2021/06/22 Python
js前端设计模式优化50%表单校验代码示例
2022/06/21 Javascript