利用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写出自己的BLOG系统 2
Apr 12 PHP
PHP自定义函数收代码
Aug 01 PHP
破解.net程序(dll文件)编译和反编译方法
Jan 31 PHP
解析用PHP实现var_export的详细介绍
Jun 20 PHP
php中的strpos使用示例
Feb 27 PHP
php实现httpclient类示例
Apr 08 PHP
Laravel框架数据库CURD操作、连贯操作总结
Sep 03 PHP
php单文件版在线代码编辑器
Mar 12 PHP
利用PHP抓取百度阅读的方法示例
Dec 18 PHP
PHP实现时间比较和时间差计算的方法示例
Jul 24 PHP
PHP抽象类基本用法示例
Dec 28 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的SQL注入实现(测试代码安全不错)
2011/02/27 PHP
PHP中通过trigger_error触发PHP错误示例
2015/06/23 PHP
JavaScript高级程序设计 阅读笔记(四) ECMAScript中的类型转换
2012/02/27 Javascript
js键盘上下左右键怎么触发function(实例讲解)
2013/12/14 Javascript
JQuery判断checkbox是否选中及其它复选框操作方法合集
2015/06/01 Javascript
js实现带圆角的两级导航菜单效果代码
2015/08/24 Javascript
Jquery使用小技巧汇总
2015/12/29 Javascript
bootstrap网页框架的使用方法
2016/05/10 Javascript
ui组件之input多选下拉实现方法(带有搜索功能)
2016/07/14 Javascript
laydate.js日期时间选择插件
2017/01/04 Javascript
原生js实现焦点轮播图效果
2017/01/12 Javascript
bootstrap table使用入门基本用法
2017/05/24 Javascript
Vue 2.0入门基础知识之内部指令详解
2017/10/15 Javascript
使用FileReader API创建Vue文件阅读器组件
2018/04/03 Javascript
angular中子控制器向父控制器传值的实例
2018/10/08 Javascript
Node.js使用supervisor进行开发中调试的方法
2019/03/26 Javascript
原生小程序封装跑马灯效果
2020/10/21 Javascript
Django查找网站项目根目录和对正则表达式的支持
2015/07/15 Python
Pandas之drop_duplicates:去除重复项方法
2018/04/18 Python
python numpy格式化打印的实例
2018/05/14 Python
使用python验证代理ip是否可用的实现方法
2018/07/25 Python
pandas将多个dataframe以多个sheet的形式保存到一个excel文件中
2019/10/10 Python
python代码打印100-999之间的回文数示例
2019/11/24 Python
PyCharm取消波浪线、下划线和中划线的实现
2020/03/03 Python
python利用platform模块获取系统信息
2020/10/09 Python
python爬虫利器之requests库的用法(超全面的爬取网页案例)
2020/12/17 Python
使用tkinter实现三子棋游戏
2021/02/25 Python
美国最大的电子宠物训练产品制造商:PetSafe
2018/10/12 全球购物
美国领先的家庭健康检测试剂盒提供商:LetsGetChecked
2019/03/18 全球购物
历史专业个人求职信分享
2013/12/20 职场文书
公司道歉信范文
2014/01/09 职场文书
小学英语教学反思
2014/01/30 职场文书
家长通知书家长意见
2015/06/03 职场文书
写一个Python脚本下载哔哩哔哩舞蹈区的所有视频
2021/05/31 Python
解决mysql模糊查询索引失效问题的几种方法
2021/06/18 MySQL
windows server2012 R2下安装PaddleOCR服务的的详细步骤
2022/09/23 Servers