我想看看我是否可以通过PHP解决验证码,以获得一些个人挑战。没什么太难的;同一行中的单词,总是用相同颜色的单词等。这是一个例子。
http://www.simplyshows.com/img.jpg
只是想看看它会有多难。 我的问题是,是否有基于PHP的功能,我可以用它来逐个像素地检查颜色等?我想分割字母,然后进行大量检查以确定字母是否为大写,小写,以及它可以是什么(取决于颜色的坐标)
答案 0 :(得分:4)
如果您真的有兴趣从头开始解决这个问题,请从GD和ImageMagick这样的库开始。
如果您有兴趣通过利用他人的工作更快地完成任务,请使用Google或StackOverflow查看是否有适用于PHP的OCR库/项目。
最后,我知道你说过你只是想玩得开心。尽管如此,PHP有很多优点,但我认为我不会选择它用于重载图像处理和AI。如果你发现自己对此有所了解,你可能希望考虑其他语言对这类事情提供更强大和更丰富的支持。但如果它只是为了好玩,那么,玩得开心!
答案 1 :(得分:2)
imagecolorat (http://php.net/manual/en/function.imagecolorat.php)就是您想要的。
答案 2 :(得分:1)
我做了类似的事情,虽然看起来很难有一个解决方案: 正如您所看到的,图像中的字母是用特定颜色书写的,这意味着您的php脚本将查找具有特定十六进制颜色值的像素。 现在想象一下,你的验证码图像缩放了x100 你会看到字母像素化,想象一个大的二维方阵,每个块都有一个id(i x j)。 在我附加的图像中,我设法在10x10数组中创建字母“T”,使用每个方块的id我可以为每个字母和数字创建模式。 使用gd库你可以实现很多东西,不用再问任何其他问题了,我只是把你的主框架搞定了 GD Library manual
答案 3 :(得分:1)
使用PHP来做这种事情是将服务器变成烤架的一种非常好的方法;)如果你想要一些真实可用的东西然后你可能想要使用exec()调用二进制文件,你最好的选择 - 写它在C或其他什么,然后从PHP调用。我可以想到使用vanilla PHP的唯一直接方法是从图像中读取十六进制并使用生成的“文本文件”进行分析,但它不会很漂亮。