在教育网站的某个区域,学生扫描并提交作业.
问题:当学生使用铅笔时,扫描结果非常轻,难以阅读.
PHP可以用来检测扫描是否太轻?我想知道是否可以使用像 使用PHP检测图像的颜色或者如何使用PHP 检测"浅色"颜色,但我不确定.这样的问题.
我不是必须要求代码,只是看看它是否可能,以及是否存在某种已存在的功能.
更新基于h2ooooooo的接受答案
我想知道PNG位深度是否会导致问题.使用他(她的?)解决方案,请考虑以下内容......
此图像("1.png")返回97.8456638355,深度为32 ...

但是,此图像(" 2.png ")返回98.4853859241,深度为24 ...

这是一个小于1%的差异,看起来1.png应该返回较低的数字,因为它显着"更加清晰",总体上比2.png更暗.
有没有人知道位深度是否会导致脚本无法正常工作?
下面这么简单的东西应该可以工作,只需遍历每个像素并在你链接的线程中使用HSL算法.为了您的目的,您可以简单地获取值并将其与阈值进行比较(测试各种文档!).
码:
<?php
function getBrightness($gdHandle) {
$width = imagesx($gdHandle);
$height = imagesy($gdHandle);
$totalBrightness = 0;
for ($x = 0; $x < $width; $x++) {
for ($y = 0; $y < $height; $y++) {
$rgb = imagecolorat($gdHandle, $x, $y);
$red = ($rgb >> 16) & 0xFF;
$green = ($rgb >> 8) & 0xFF;
$blue = $rgb & 0xFF;
$totalBrightness += (max($red, $green, $blue) + min($red, $green, $blue)) / 2;
}
}
imagedestroy($gdHandle);
return ($totalBrightness / ($width * $height)) / 2.55;
}
?>
Run Code Online (Sandbox Code Playgroud)
用法:
<?php
var_dump( getBrightness( imagecreatefrompng('pic1.png') ) );
// 22.626517105341
var_dump( getBrightness( imagecreatefrompng('pic2.png') ) );
// 60.289981746452
var_dump( getBrightness( imagecreatefrompng('pic3.png') ) );
// 77.183088971324
?>
Run Code Online (Sandbox Code Playgroud)
结果:
pic1.png(22.62%亮):

pic2.png(60.28%亮):

pic3.png(亮度77.18%):

注意:
如果文档很大(这将遍历每个像素),这将花费很长时间.如果您希望它更快,您可以随时将调整大小的GD资源传递给该函数.
| 归档时间: |
|
| 查看次数: |
2077 次 |
| 最近记录: |