利用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 相关文章推荐
php Static关键字实用方法
Jun 04 PHP
用PHP实现递归循环每一个目录
Aug 08 PHP
php中将地址生成迅雷快车旋风链接的代码[测试通过]
Apr 20 PHP
php调用Google translate_tts api实现代码
Aug 07 PHP
跟我学Laravel之请求与输入
Oct 15 PHP
php 在线导入mysql大数据程序
Jun 11 PHP
编写PHP脚本清除WordPress头部冗余代码的方法讲解
Mar 01 PHP
PHP中的表达式简述
May 29 PHP
php通过执行CutyCapt命令实现网页截图的方法
Sep 30 PHP
php获取开始与结束日期之间所有日期的方法
Nov 29 PHP
PHP实现从上往下打印二叉树的方法
Jan 18 PHP
Laravel实现搜索的时候分页并携带参数
Oct 15 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
怎样在UNIX系统下安装php3
2006/10/09 PHP
php设计模式 Decorator(装饰模式)
2011/06/26 PHP
深入理解Yii2.0乐观锁与悲观锁的原理与使用
2017/07/26 PHP
laravel5.5添加echarts实现画图功能的方法
2019/10/09 PHP
用js实现table单元格高宽调整,兼容合并单元格(兼容IE6、7、8、FF)实例
2013/06/25 Javascript
使用indexOf等在JavaScript的数组中进行元素查找和替换
2013/09/18 Javascript
JSF中confirm弹出框的用法示例介绍
2014/01/07 Javascript
JQUERY简单按钮轮换选中效果实现方法
2015/05/07 Javascript
个人总结的一些JavaScript技巧、实用函数、简洁方法、编程细节
2015/06/10 Javascript
谈谈JavaScript中function多重理解
2015/08/28 Javascript
AngularJS入门教程之Select(选择框)详解
2016/07/27 Javascript
深入理解在JS中通过四种设置事件处理程序的方法
2017/03/02 Javascript
利用纯JS实现像素逐渐显示的方法示例
2017/08/14 Javascript
JavaScript实现简单图片轮播效果
2017/08/21 Javascript
vue2实现可复用的轮播图carousel组件详解
2017/11/27 Javascript
解析Vue.js中的组件
2018/02/02 Javascript
JavaScript递归函数定义与用法实例分析
2019/01/24 Javascript
layui原生表单验证的实例
2019/09/09 Javascript
js实现简单页面全屏
2019/09/17 Javascript
解决vue+router路由跳转不起作用的一项原因
2020/07/19 Javascript
Vue 解决通过this.$refs来获取DOM或者组件报错问题
2020/07/28 Javascript
vue中解决chrome浏览器自动播放音频和MP3语音打包到线上的实现方法
2020/10/09 Javascript
在Django中创建动态视图的教程
2015/07/15 Python
简单谈谈python中的语句和语法
2017/08/10 Python
Python语言实现百度语音识别API的使用实例
2017/12/13 Python
Python判断两个list是否是父子集关系的实例
2018/05/04 Python
使用Python-OpenCV向图片添加噪声的实现(高斯噪声、椒盐噪声)
2019/05/28 Python
Python3使用xml.dom.minidom和xml.etree模块儿解析xml文件封装函数的方法
2019/09/23 Python
python实现自动打卡的示例代码
2020/10/10 Python
用HTML5实现鼠标滚轮事件放大缩小图片的功能
2015/06/25 HTML / CSS
Html5嵌入钉钉的实现示例
2020/06/04 HTML / CSS
英国领先的汽车轮胎和快速健康中心:Kwik Fit
2017/10/29 全球购物
欧洲领先的技术商店:eibmarkt.com
2019/05/10 全球购物
行政文员岗位职责
2013/11/08 职场文书
《雷鸣电闪波尔卡》教学反思
2014/02/23 职场文书
Win2008系统搭建DHCP服务器
2022/06/25 Servers