PHP比较两张图片是否一致
思路:通过file_get_contents函数将图片读取到字符串中,然后再通过base64_encode转换,最后拼接上Data URI scheme
<?php
/**
* 比较两张图片是否一致
* 通过将图片转成base64字符串再去比较
* @param $file 文件路径
* @return string base64字符串
*/
function fileToBase64($file)
{
$base64File = '';
if (file_exists($file)) {
$mimeType = mime_content_type($file);
$base64Data = base64_encode(file_get_contents($file));
$base64File = 'data:' . $mimeType . ';base64,' . $base64Data;
//为啥要拼接上'data:' . $mimeType . ';base64,'呢,因为这是Data URI scheme
//Data URI scheme是在RFC2397中定义的,目的是将一些小的数据,直接嵌入到网页中,
//从而不用再从外部文件载入。比如上面那串字符,其实是一张小图片,将这些字符复制黏贴到李兰器的地址栏中并转到,
//就能看到它了
}
return $base64File;
}
$img1 = fileToBase64('./source/timg1.jpg');
$img2 = fileToBase64('./source/timg2.jpg');
$img3 = fileToBase64('./source/timg3.jpg');
$img4 = fileToBase64('./source/timg4.png');
var_dump($img1);
var_dump($img1 == $img2);
var_dump($img2 == $img3);
var_dump($img3 == $img4);