利用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 相关文章推荐
解决控件遮挡问题:关于有窗口元素和无窗口元素
Jan 28 PHP
dede3.1分页文字采集过滤规则详说(图文教程)续四
Apr 03 PHP
PHP中MVC模式的模板引擎开发经验分享
Mar 23 PHP
PHP explode()函数用法、切分字符串
Oct 03 PHP
PHP重定向的3种方式
Mar 07 PHP
基于php验证码函数的使用示例
May 03 PHP
PHP时间戳 strtotime()使用方法和技巧
Oct 29 PHP
验证token、回复图文\文本、推送消息的实用微信类php代码
Jun 28 PHP
thinkPHP中验证码的简单实现方法
Dec 05 PHP
PHP利用Mysql锁解决高并发的方法
Sep 04 PHP
PHP创建文件及写入数据(覆盖写入,追加写入)的方法详解
Feb 15 PHP
关于PHP求解三数之和问题详析
Nov 09 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
用 PHP5 轻松解析 XML
2006/12/04 PHP
php面向对象的用户登录身份验证
2017/06/08 PHP
javascript 多种搜索引擎集成的页面实现代码
2010/01/02 Javascript
自制轻量级仿jQuery.boxy对话框插件代码
2010/10/26 Javascript
基于Jquery的动态创建DOM元素的代码
2010/12/28 Javascript
js使用eval解析json(js中使用json)
2014/01/17 Javascript
js实现鼠标悬停图片上时滚动文字说明的方法
2015/02/17 Javascript
jQuery的end()方法使用详解
2015/07/15 Javascript
JavaScript动态创建form表单并提交的实现方法
2015/12/10 Javascript
jQuery增加与删除table列的方法
2016/03/01 Javascript
AngularJS基础 ng-keypress 指令简单示例
2016/08/02 Javascript
微信小程序 列表的上拉加载和下拉刷新的实现
2017/04/01 Javascript
使用JavaScript实现在页面中显示距离2017年中秋节的天数
2017/09/26 Javascript
js实现图片放大并跟随鼠标移动特效
2019/01/18 Javascript
如何利用 JS 脚本实现网页全自动秒杀抢购功能
2020/10/12 Javascript
[08:47]DOTA2每周TOP10 精彩击杀集锦vol.6
2014/06/25 DOTA
Python基础教程之利用期物处理并发
2018/03/29 Python
python实现textrank关键词提取
2018/06/22 Python
Python 爬虫之Beautiful Soup模块使用指南
2018/07/05 Python
解决python中os.listdir()函数读取文件夹下文件的乱序和排序问题
2018/10/17 Python
全面了解django的缓存机制及使用方法
2019/07/22 Python
Python 元组操作总结
2019/09/18 Python
python实现扫雷游戏的示例
2020/10/20 Python
为什么要优先使用同步代码块而不是同步方法?
2013/01/30 面试题
医院工作检讨书范文
2014/02/10 职场文书
仓库管理员岗位职责
2014/03/19 职场文书
年会搞笑主持词串词
2014/03/24 职场文书
和谐家庭演讲稿
2014/05/24 职场文书
支部书记四风对照材料
2014/08/28 职场文书
2014年办公室个人工作总结
2014/11/12 职场文书
情况说明书怎么写
2015/10/08 职场文书
解决numpy数组互换两行及赋值的问题
2021/04/17 Python
详解vue中v-for的key唯一性
2021/05/15 Vue.js
HashMap实现保存两个key相同的数据
2021/06/30 Java/Android
MySQL千万级数据表的优化实战记录
2021/08/04 MySQL
Qt数据库应用之实现图片转pdf
2022/06/01 Java/Android