利用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版)
Aug 21 PHP
ThinkPHP中公共函数路径和配置项路径的映射分析
Nov 22 PHP
php实现的SESSION类
Dec 02 PHP
实例讲解yii2.0在php命令行中运行的步骤
Dec 01 PHP
PHP函数import_request_variables()用法分析
Apr 02 PHP
PHP简单实现无限级分类的方法
May 13 PHP
mysql alter table命令修改表结构实例详解
Sep 24 PHP
Yii针对添加行的增删改查操作示例
Oct 18 PHP
PHP生成唯一ID之SnowFlake算法
Dec 17 PHP
PHP序列化的四种实现方法与横向对比
Nov 29 PHP
eval(cmd)与eval($cmd)的区别与联系
Jul 07 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 文件上传实例代码
2012/04/19 PHP
PHP生成器简单实例
2015/05/13 PHP
PHP大文件切割上传功能实例分析
2019/07/01 PHP
ThinkPHP 框架实现的读取excel导入数据库操作示例
2020/04/14 PHP
父窗口获取弹出子窗口文本框的值
2006/06/27 Javascript
jquery自动将form表单封装成json的具体实现
2014/03/17 Javascript
javascript作用域和闭包使用详解
2014/04/25 Javascript
Windows系统下Node.js的简单入门教程
2015/06/23 Javascript
jQuery源码分析之init的详细介绍
2017/02/13 Javascript
ES6实现的遍历目录函数示例
2017/04/07 Javascript
vue.js todolist实现代码
2017/10/29 Javascript
bootstrap treeview 扩展addNode方法动态添加子节点的方法
2017/11/21 Javascript
详解vue中组件参数
2018/07/09 Javascript
elementUI中Table表格问题的解决方法
2018/12/04 Javascript
详解vue 不同环境配置不同的打包命令
2019/04/07 Javascript
JavaScript中BOM对象原理与用法分析
2019/07/09 Javascript
layui加载表格,绑定新增,编辑删除,查看按钮事件的例子
2019/09/06 Javascript
浅谈小程序globalData的那些事儿
2019/11/01 Javascript
JS深入学习之数组对象排序操作示例
2020/05/01 Javascript
详解JSON.stringify()的5个秘密特性
2020/05/26 Javascript
[01:24:51]2014 DOTA2华西杯精英邀请赛 5 25 LGD VS NewBee第二场
2014/05/26 DOTA
在MAC上搭建python数据分析开发环境
2016/01/26 Python
Python Tkinter模块实现时钟功能应用示例
2018/07/23 Python
Pycharm以root权限运行脚本的方法
2019/01/19 Python
解决python 上传图片限制格式问题
2019/10/30 Python
Python tkinter常用操作代码实例
2020/01/03 Python
解决tensorflow 释放图,删除变量问题
2020/06/23 Python
公司员工的自我评价范例
2013/11/01 职场文书
酒店led欢迎词
2014/01/09 职场文书
学生吸烟检讨书
2014/09/14 职场文书
“四风”查摆问题自我剖析材料
2014/09/27 职场文书
个人工作保证书
2015/02/28 职场文书
2015年高中班主任工作总结
2015/04/30 职场文书
python 实现定时任务的四种方式
2021/04/01 Python
goland设置颜色和字体的操作
2021/05/05 Golang
Springboot-cli 开发脚手架,权限认证,附demo演示
2022/04/28 Java/Android