全方位站长技能、SEO优化学习平台
当前位置:网站首页 > PHP笔记 > 正文

PHP如何判断两张图片是否一样?

作者:admin发布时间:2023-12-12分类:PHP笔记浏览:149评论:0


温馨提示:手机扫码可阅读当前文章!
文章简介:PHP能判断两张图片是一张图片吗?如果可以判断,那么该如何来实现呢?本文就用实际例子来演示PHP如何判断两张图片是否一样。注意:本文使用的是PHP的判断功能需要调用GD库扩展,你需要确保你已经安装并启用了GD库扩展,因为GD库扩展提供了图像...

PHP能判断两张图片是一张图片吗?如果可以判断,那么该如何来实现呢?本文就用实际例子来演示PHP如何判断两张图片是否一样。

PHP如何判断两张图片是否一样?  第1张

注意:本文使用的是PHP的判断功能需要调用GD库扩展,你需要确保你已经安装并启用了GD库扩展,因为GD库扩展提供了图像处理功能。

案例代码一:判断两张图片顶部向下200px高度的部分是否一致,可以通过比较两张图片的像素值来实现

$image1Path = 'path/to/image1.jpg';
$image2Path = 'path/to/image2.jpg';
// 创建图像资源
$image1 = imagecreatefromjpeg($image1Path);
$image2 = imagecreatefromjpeg($image2Path);
// 获取图像高度和宽度
$height = imagesy($image1);
$width = imagesx($image1);
// 指定比较的高度范围(从顶部向下200px)
$compareHeight = 200;
for ($y = 0; $y < $compareHeight; $y++) {
    for ($x = 0; $x < $width; $x++) {
        // 获取两张图片对应像素的RGB值
        $rgb1 = imagecolorat($image1, $x, $y);
        $rgb2 = imagecolorat($image2, $x, $y);
        // 检查两个像素是否相等
        if ($rgb1 !== $rgb2) {
            // 图片在顶部向下200px高度的部分不一致
            echo "两张图片顶部向下200px高度的部分不一致";
            // 可以根据实际需求进行后续处理
            exit;
        }
    }
}
// 图片在顶部向下200px高度的部分一致
echo "两张图片顶部向下200px高度的部分一致";
// 释放图像资源
imagedestroy($image1);
imagedestroy($image2);

在上面的代码中,我们使用imagecreatefromjpeg()函数创建了两张图片的图像资源,并使用imagesy()和imagesx()函数获取图片的高度和宽度。然后,我们遍历顶部向下200px高度的部分,然后使用imagecolorat()函数获取每个像素点的RGB值。最后,对比两张图片对应像素的RGB值,如果存在不相等的情况,则表示两张图片在顶部向下200px高度的部分不一致。

同样的道理,我们来进行实际PHP程序中应用。假如我需要判断一个网站的百度权重值,但是我们没有强大的数据来支撑一个网站权重大小的评判依据,我们就可以使用第三方的数据。但是很多第三方的数据api接口是收费的,我们就得想其他解决方法了。

下面来为大家提示一种思路,通过网站权重图片的对比来实现网站权重大小的判断:

PHP如何判断两张图片是否一样?  第2张

复制以后的URL是:https://***/images/br/10.png

然后我们把该图片下载下来保存为10,然后通过浏览器直接访问该URL,并把10改为9,然后把图存下来,一致保存完0-10的权重图片。假设我们保存到bdbr/目录下。最后我们点击百度权重值图标进入百度权重的详细介绍页面,到最底部找到调用百度权重的部分。

PHP如何判断两张图片是否一样?  第3张

这里的是动态百度权重值图标,我们值需要改动域名即可查询其他网站。所以我们可以根据该方法来查询任意网站的百度权重。

我们写一个类,命名为check_bdbr:

function check_bdbr($domain) {
for($i=0;$i<=10;$i++)
{
$image1 = '../bdbr/'.$i.'.png'; // 第一张图片的路径
$brurl = 'https://baidurank.aizhan.com/api/br?domain='.$domain.'&style=images'; // 图片的URL
$image2 = '../data/image.png'; // 本地保存路径和文件名
$imageContent = file_get_contents($brurl); // 读取图片内容
file_put_contents($image2, $imageContent); // 将内容写入本地文件
// 使用imagecreatefromjpeg函数创建两个图片资源
$resource1 = imagecreatefrompng($image1);
$resource2 = imagecreatefrompng($image2);
// 使用imagejpeg函数将两个图片资源输出到临时文件中
$temp1 = tempnam(sys_get_temp_dir(), 'img');
$temp2 = tempnam(sys_get_temp_dir(), 'img');
imagejpeg($resource1, $temp1, 100);
imagejpeg($resource2, $temp2, 100);
// 使用md5函数获取两个临时文件内容的MD5值
$md5_1 = md5_file($temp1);
$md5_2 = md5_file($temp2);
// 比较两个MD5值是否相同
if ($md5_1 === $md5_2) {
    $br=$i;
}
// 删除临时文件
unlink($temp1);
unlink($temp2);
// 释放图片资源
imagedestroy($resource1);
imagedestroy($resource2);
return $br;
}

该类通过循环查询某网站的动态百度权重图片(https://baidurank.aizhan.com/api/br?domain='.$domain.'&style=images)来与我们提前保存的权重图片做对比,如果该图片与bdbr/1.png图片一样,那么我们就判断该网站的权重值为1;果该图片与bdbr/8.png图片一样,那么我们就判断该网站的权重值为8。

类的使用方法:

例如:$bdbr = check_bdbr(www.baidu.com);


这就是PHP判断两张图片是否一样的巧妙运用。你甚至可以用来检测网站图片是否有重复等。虽然PHP代码的用法和使用方法都是一样的,但是不同的人完成同一个目标所使用的代码却是千变万化的。而且只要你善于巧妙的使用代码,往往能令你化腐朽为神奇!

欢迎您,来自美国的朋友,您的IP:3.142.174.133,您的网络:Amazon_EC2服务器


欢迎 发表评论:

  • 请填写验证码
PHP笔记排行
随机推荐
猜你喜欢

服务热线

1888888888

要发发发发发发

站长微信公众号

站长微信公众号

分享:

支付宝

微信