IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> PHP基于ImageMagic实现PS正片叠底、滤色等效果 -> 正文阅读

[PHP知识库]PHP基于ImageMagic实现PS正片叠底、滤色等效果

上次通过终端测试PHP是否能够实现PS正片叠底、滤色等效果,具体文章可以查看《Shell命令使用ImageMagic实现PS正片叠底、滤色等效果》

在确定PHP可以实现后,这边查找资料通过PHP程序来实现效果,因为需要实时的合成多张效果图,所以通过终端方法不合适,最终实现方案所下所示:

<?php

// 模式类型
$types = [
     'Normal'     => \Imagick::COMPOSITE_DEFAULT,    // 正常
     'Multiply'   => \Imagick::COMPOSITE_MULTIPLY,   // 正片叠底
     'Screen'     => \Imagick::COMPOSITE_SCREEN,     // 滤色
     'Overlay'    => \Imagick::COMPOSITE_OVERLAY,    // 叠加
     'Darken'     => \Imagick::COMPOSITE_DARKEN,     // 变暗
     'Lighten'    => \Imagick::COMPOSITE_LIGHTEN,    // 变亮
     'ColorDodge' => \Imagick::COMPOSITE_COLORDODGE, // 颜色减淡
     'ColorBurn'  => \Imagick::COMPOSITE_COLORBURN,  // 颜色加深
     'HardLight'  => \Imagick::COMPOSITE_HARDLIGHT,  // 强光
     'SoftLight'  => \Imagick::COMPOSITE_SOFTLIGHT,  // 柔光
     'Difference' => \Imagick::COMPOSITE_DIFFERENCE, // 差集
     'Exclusion'  => \Imagick::COMPOSITE_EXCLUSION,  // 排除
     'Hue'        => \Imagick::COMPOSITE_HUE,        // 色相
     'Saturate'   => \Imagick::COMPOSITE_SATURATE,   // 饱和度
     'Colorize'   => \Imagick::COMPOSITE_COLORIZE,   // 颜色
     'Luminize'   => \Imagick::COMPOSITE_LUMINIZE    // 亮度
 ];

// 合成数据
$lists = [
	"title" => "测试",
	"width" => 1920,
	"height" => 920,
	"layers" => [
		[
			"index" => 1,
			"lists" => [
				[
					"url" =>"/test/58f235f5-74-1.jpg",
					"left" => 0,
					"top" => 0,
					"type" => 40 // 模式:正片叠底、滤色等常量
					],
				[
					"url" =>"/test/66fb8712dcec.jpg",
					"left" => 0,
					"top" => 0,
					"type" => 29 // 模式:正片叠底、滤色等常量
				]
			]
		]
	]
];

/**
 * 合并多图
 * @param array  $lists 图层数据
 */
public function compositeImg($lists) {
	// 循环合并多图
	foreach ($lists as $item) {
		// 最终是在这一步方法实现的,调用扩展提供的方法,合并两张图片,并指定type混合模式,就是上面的types
		$imagick->compositeImage(new \Imagick($item['url']), $item['type'], $item['left'], $item['top']);
	}
	
	// 输出画板
	$path = "/test/{$data['info']['title']}.png"
	$output = public_path() . "{$path}";

	// 判断文件夹是否存在
	$dir = public_path() . "test";
	if (!is_dir($dir)) {
		mkdir($dir,0777,true);
	}
	
	// 合成图片
	$result = $imagick->writeImage($output);

	return $output;
}

以下为部分混合模式生成的效果图:

排除模式
排除模式
滤色模式
在这里插入图片描述
颜色淡减模式
在这里插入图片描述
色相模式
在这里插入图片描述
强光模式
在这里插入图片描述
柔光模式
在这里插入图片描述

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2022-03-31 23:44:14  更:2022-03-31 23:44:20 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/18 13:24:23-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码