利用php_imagick实现复古效果的方法

5年以前  |  阅读数:493 次  |  编程语言:PHP 

介绍

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实现复古效果的方法

先来看下效果图


复古效果展示

要实现以上效果,我们先用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分页显示制作详细讲解
SSH 登录失败:Host key verification failed
获取IMSI
将二进制数据转为16进制以便显示
获取IMEI
文件下载
贪吃蛇
双位运算符
PHP自定义函数获取搜索引擎来源关键字的方法
Java生成UUID
发送邮件
年的日历图
提取后缀名
在Zeus Web Server中安装PHP语言支持
让你成为最历害的git提交人
Yii2汉字转拼音类的实例代码
再谈PHP中单双引号的区别详解
指定应用ID以获取对应的应用名称
Python 2与Python 3版本和编码的对比
php封装的page分页类完整实例