spatie/pixelmatch-php

使用 PHP 比较图像

1.1.0 2024-04-12 06:20 UTC

This package is auto-updated.

Last update: 2024-09-08 04:49:23 UTC


README

Latest Version on Packagist Tests Total Downloads

该包可以比较两张图像并返回匹配像素的百分比。它是 Pixelmatch JavaScript 库的 PHP 封装。

以下是一个使用该包的快速示例。

use Spatie\Pixelmatch\Pixelmatch;

$pixelmatch = Pixelmatch::new("path/to/file1.png", "path/to/file2.png");

$pixelmatch->matchedPixelPercentage(); // returns a float, for example 97.5
$pixelmatch->mismatchedPixelPercentage(); // returns a float, for example 2.5

支持我们

我们投入了大量资源来创建 一流的开放式源代码包。您可以通过 购买我们的付费产品之一 来支持我们。

我们非常感谢您从家乡给我们寄来明信片,说明您正在使用哪些我们的包。您可以在 我们的联系页面 上找到我们的地址。我们将在 我们的虚拟明信片墙上 发布所有收到的明信片。

安装

您可以通过 composer 安装此包

composer require spatie/pixelmatch-php

在您的项目或服务器上,您必须安装 JavaScript 包 Pixelmatch

npm install pixelmatch

... 或 Yarn。

yarn add pixelmatch

确保您已安装 Node 16 或更高版本。

用法

以下是如何获取两张图像之间匹配像素百分比的示例。

use Spatie\Pixelmatch\Pixelmatch;

$pixelmatch = Pixelmatch::new("path/to/file1.png", "path/to/file2.png");

$pixelmatch->matchedPixelPercentage(); // returns a float, for example 97.5
$pixelmatch->mismatchedPixelPercentage(); // returns a float, for example 2.5

要获取匹配和不匹配像素的数量,您可以使用这些方法。

use Spatie\Pixelmatch\Pixelmatch;

$pixelmatch = Pixelmatch::new("path/to/file1.png", "path/to/file2.png");

$pixelmatch->matchedPixels(); // returns an int
$pixelmatch->mismatchedPixels(); // returns an int

您可以使用 matches function 来检查图像是否匹配。

use Spatie\Pixelmatch\Pixelmatch;

$pixelmatch = Pixelmatch::new("path/to/file1.png", "path/to/file2.png");
$pixelmatch->matches(); // returns a boolean
$pixelmatch->doesNotMatch(); // returns a boolean

设置阈值

要设置不匹配像素数量的阈值,您可以使用 threshold 方法。更高的值将使比较更敏感。阈值应在 0 到 1 之间。

如果您不设置阈值,我们将使用默认值 0.1

$pixelmatch->threshold(0.05);

忽略反走样

要忽略反走样像素,您可以使用 includeAa 方法。

$pixelmatch->includeAa();

限制

该包只能比较 png 图像。

不同尺寸的图像无法比较。如果您尝试这样做,将抛出 Spatie\Pixelmatch\Exceptions\CouldNotCompare 异常。

测试

composer test

变更日志

请参阅 CHANGELOG 了解最近更改的信息。

贡献

请参阅 CONTRIBUTING 了解详细信息。

安全漏洞

请参阅 我们的安全策略 了解如何报告安全漏洞。

鸣谢

许可

MIT 许可证 (MIT)。请参阅 许可文件 了解更多信息。