利用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 相关文章推荐
第十三节--对象串行化
Nov 16 PHP
新手学PHP之数据库操作详解及乱码解决!
Jan 02 PHP
PHP中用正则表达式清除字符串的空白
Jan 17 PHP
php url路由入门实例
Apr 23 PHP
PHP异常Parse error: syntax error, unexpected T_VAR错误解决方法
May 06 PHP
php使用ereg验证文件上传的方法
Dec 16 PHP
php上传文件并存储到mysql数据库的方法
Mar 16 PHP
PHP递归遍历指定目录的文件并统计文件数量的方法
Mar 24 PHP
php实现转换html格式为文本格式的方法
May 16 PHP
php实现的http请求封装示例
Nov 08 PHP
Django 中 cookie的使用
Aug 17 PHP
laravel 解决强制跳转 https的问题
Oct 22 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
德生9700DX电路分析
2021/03/02 无线电
PHP中在数据库中保存Checkbox数据(1)
2006/10/09 PHP
yii的CURD操作实例详解
2014/12/04 PHP
PHP asXML()函数讲解
2019/02/03 PHP
用JavaScript调用WebService的示例
2008/04/07 Javascript
jquery tools之tabs 选项卡/页签
2009/07/25 Javascript
JS 日期验证正则附asp日期格式化函数
2009/09/11 Javascript
兼容IE和FF的js脚本代码小结(比较常用)
2010/12/06 Javascript
使用jQuery内容过滤选择器选择元素实例讲解
2013/04/18 Javascript
jquery ajaxSubmit 异步提交的简单实现
2014/02/28 Javascript
jQuery zclip插件实现跨浏览器复制功能
2015/11/02 Javascript
原生JS实现风箱式demo,并封装了一个运动框架(实例代码)
2016/07/22 Javascript
React Native中导航组件react-navigation跨tab路由处理详解
2017/10/31 Javascript
JS实现前端页面的搜索功能
2018/06/12 Javascript
VUE 解决mode为history页面为空白的问题
2019/11/01 Javascript
[52:15]2014 DOTA2国际邀请赛中国区预选赛5.21 HGT VS LGD-GAMING
2014/05/23 DOTA
python追加元素到列表的方法
2015/07/28 Python
Windows环境下python环境安装使用图文教程
2018/03/13 Python
Numpy之文件存取的示例代码
2018/08/03 Python
python 实现图片旋转 上下左右 180度旋转的示例
2019/01/24 Python
python re.sub()替换正则的匹配内容方法
2019/07/22 Python
Python检查 云备份进程是否正常运行代码实例
2019/08/22 Python
pytorch-RNN进行回归曲线预测方式
2020/01/14 Python
解决keras GAN训练是loss不发生变化,accuracy一直为0.5的问题
2020/07/02 Python
详解pytorch中squeeze()和unsqueeze()函数介绍
2020/09/03 Python
HTML5 Canvas自定义圆角矩形与虚线示例代码
2013/08/02 HTML / CSS
日本著名化妆品零售网站:Cosme Land
2019/03/01 全球购物
财务经理的岗位职责
2013/12/17 职场文书
学期自我评价
2014/01/27 职场文书
员工入职担保书范文
2014/04/01 职场文书
马云北大演讲完整版:真心话,什么才是阿里的核心竞争力?
2014/04/04 职场文书
公司承诺书格式
2014/05/21 职场文书
大学生党员自我剖析材料
2014/10/06 职场文书
农民工工资支付承诺书
2015/05/04 职场文书
go原生库的中bytes.Buffer用法
2021/04/25 Golang
Netty分布式客户端处理接入事件handle源码解析
2022/03/25 Java/Android