利用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 相关文章推荐
杏林同学录(七)
Oct 09 PHP
PHP HTML代码串截取代码
Dec 29 PHP
ie6 动态缩略图不显示的原因
Jun 21 PHP
PHP 代码规范小结
Mar 08 PHP
解析php中两种缩放图片的函数,为图片添加水印
Jun 14 PHP
深入解析PHP的引用计数机制
Jun 14 PHP
PHP中使用file_get_contents抓取网页中文乱码问题解决方法
Dec 17 PHP
php实现图片上传、剪切功能
May 07 PHP
php版微信自动登录并获取昵称的方法
Sep 23 PHP
PHP实现大数(浮点数)取余的方法
Feb 18 PHP
PHP下载远程图片的几种方法总结
Apr 07 PHP
PHP如何实现订单的延时处理详解
Dec 30 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根据isbn书号查询amazon网站上的图书信息的示例
2014/02/13 PHP
destoon实现会员商铺中指定会员或会员组投放广告的方法
2014/08/21 PHP
PHP实现文件下载断点续传详解
2014/10/15 PHP
PHP7 整型处理机制修改
2021/03/09 PHP
JavaScript Cookie 直接浏览网站分网址
2009/12/08 Javascript
JavaScript 开发规范要求(图文并茂)
2010/06/11 Javascript
JQuery从头学起第三讲
2010/07/06 Javascript
8个超棒的学习 jQuery 的网站 推荐收藏
2011/04/02 Javascript
读jQuery之十一 添加事件核心方法
2011/07/31 Javascript
JS和函数式语言的三特性
2014/03/05 Javascript
JavaScript中的Promise使用详解
2015/06/24 Javascript
微信js-sdk地理位置接口用法示例
2016/10/12 Javascript
jQuery表格的维护和删除操作
2017/02/03 Javascript
vue中如何实现变量和字符串拼接
2017/06/19 Javascript
vue element table 表格请求后台排序的方法
2018/09/28 Javascript
JavaScript原型对象原理与应用分析
2018/12/27 Javascript
微信小程序用户授权弹窗 拒绝时引导用户重新授权实现
2019/07/29 Javascript
python实现多线程采集的2个代码例子
2014/07/07 Python
Python的迭代器和生成器使用实例
2015/01/14 Python
python常规方法实现数组的全排列
2015/03/17 Python
OPENCV去除小连通区域,去除孔洞的实例讲解
2018/06/21 Python
python3.6的venv模块使用详解
2018/08/01 Python
Django 实现xadmin后台菜单改为中文
2019/11/15 Python
春节到了 教你使用python来抢票回家
2020/01/06 Python
Python3的socket使用方法详解
2020/02/18 Python
Python连接SQLite数据库并进行增册改查操作方法详解
2020/02/18 Python
德国街头和运动文化高品质商店:BSTN Store
2017/08/26 全球购物
财务人员个人求职信范文
2013/12/04 职场文书
个人简历中的自我评价怎么写
2014/01/26 职场文书
学校消防演习方案
2014/02/19 职场文书
物业经理自我鉴定
2014/03/03 职场文书
职务任命书范本
2014/06/05 职场文书
2015年统战工作总结
2015/05/19 职场文书
2015年加油站站长工作总结
2015/05/27 职场文书
MySQL数据库事务的四大特性
2022/04/20 MySQL
python中pd.cut()与pd.qcut()的对比及示例
2022/06/16 Python