简单验证码的识别步骤有:黑白、锐化、切分、建模。
说说如何锐化,我从网上找到一个C#版本的:
//hsb: 0与1之间的值
public static Bitmap BitmapTo1Bpp(Bitmap img,Double hsb)
{
int w = img.Width;
int h = img.Height;
Bitmap bmp = new Bitmap(w, h, PixelFormat.Format1bppIndexed);
BitmapData data = bmp.LockBits(new Rectangle(0, 0, w, h), ImageLockMode.ReadWrite, PixelFormat.Format1bppIndexed);
for (int y = 0; y < h; y++)
{
byte[] scan = new byte[(w + 7) / 8];
for (int x = 0; x < w; x++)
{
Color c = img.GetPixel(x, y);
//Console.WriteLine(c.GetBrightness().ToString());
if (c.GetBrightness() >= hsb ) scan[x / 8] |= (byte)(0x80 >> (x % 8));
}
Marshal.Copy(scan, 0, (IntPtr)((int)data.Scan0 + data.Stride * y), scan.Length);
}
bmp.UnlockBits(data);
return bmp;
}
网上有不少图片处理类,所谓的“锐化”都起不到真正的效果。对于jpg等已经压缩过的图片,放大后,是可以看到空白区域有很多杂点的。用下面的函数,就可以轻松搞定:
function imagelightnessat($img, $x, $y) {
if(!is_resource($img)) {
trigger_error("imagelightnessat(): supplied argument is not a valid "
. "Image resource", E_USER_WARNING);
return 0.0;
}
$c = @imagecolorat($img, $x, $y);
if($c === false) return false;
if(imageistruecolor($img))
{
$red = ($c >> 16) & 0xFF;
$green = ($c >> 8) & 0xFF;
$blue = $c & 0xFF;
}
else
{
$i = imagecolorsforindex($img, $c);
$red = $i['red'];
$green = $i['green'];
$blue = $i['blue'];
}
$m = min($red, $green, $blue);
$n = max($red, $green, $blue);
/* Because RGB isn't normalized in GD, we divide by 510 here.
* Lightness = (Max(RGB) + Min(RGB)) / 2
* But that's assuming red, green, and blue are 0 through 1 inclusive.
* Red, green, and blue are actually 0-255 (255 + 255 = 510).
*/
$lightness = (double)(($m + $n) / 510.0);
return($lightness);
}
上面的函数来自于php.net线上手册注释。
有了清晰的、无干扰点的图片,剩下的事情,就很简单了。
分享到:
相关推荐
7. **滤镜效果**:为了增强图片的艺术效果,类库可能还提供了如模糊、锐化、对比度、饱和度等滤镜功能。 8. **批处理**:对于大量图片的处理,批处理功能能大大提高效率。这个类库可能支持一次性处理多个文件,节省...
在描述中,这些功能被具体化为图片处理类的能力,包括水印、透明度、缩放、锐化。标签则简明扼要地强调了这些功能都属于PHP图片处理的范畴。 在PHP中,图片处理通常通过GD库或ImageMagick扩展来实现。这些功能包括...
"Flash-Php的图片处理工具"是专门为PHP开发的一款用于图片管理、编辑和优化的软件工具,它可以帮助开发者轻松地实现各种图片操作。在这个压缩包文件`flash_img_tool`中,可能包含了实现这些功能的相关代码、库文件、...
通过`$SHARP`变量可以调整图片的锐化程度,以增强图片细节。 7. **错误处理**: 类中定义了一个错误数组`$ERROR`,当图片处理过程中出现问题时,会输出对应的错误信息。 类的构造函数`__construct($PICTURE_URL)...
在开发涉及图片处理的Web应用时,这个类能够帮助我们对图片进行尺寸缩放、裁剪、添加相框、水印、锐化、旋转、翻转、调整透明度、反色等操作。 在实现通用图片处理类的过程中,通常会涉及到以下核心知识点: 1. ...
Grafika提供了丰富的功能,包括添加文字、调整颜色、拼接图片以及应用多种滤镜,使得PHP在图像处理方面的能力大大增强。下面,我们将深入探讨Grafika的主要特性和使用方法。 1. **安装与引入** 在开始使用Grafika...
4. **滤镜效果**:`timthumb.php` 还可能包含一些基本的图像处理功能,如灰度、模糊、锐化等滤镜,以增强或改变图片效果。 5. **水印**:支持添加文字或图像水印,为版权保护或品牌宣传提供便利。 6. **缓存机制**...
一个多功能的php图片处理类,图片处理函数功能:缩放、剪切、相框、水印、锐化、旋转、翻转、透明度、反色,处理并保存历史记录的思路:当有图片有改动时自动生成一张新图片,命 名方式可以考虑在原图片的基础上加上...
此外,它还提供了丰富的滤镜功能,如模糊、锐化、对比度调整等,让你可以轻松定制图片效果。 安全方面,Glide通过签名机制防止恶意请求,确保只有经过授权的请求才能处理图片。你还可以设置允许的最大尺寸和质量...
然后,通过PHP代码调用该库,传入原始图片路径和所需参数,即可生成理想的缩放图片。 例如,以下是一个简单的phpThumb使用示例: ```php <?php require_once('phpthumb.class.php'); $thumb = new phpThumb(); $...
在实际项目中,PHP图像处理程序常用于网站头像上传、图片裁剪、缩略图生成、动态验证码生成等场景。例如,用户上传一张大尺寸照片,我们可以用PHP和GD2处理成适合显示的缩略图,减少服务器存储空间并加快网页加载...
总的来说,PHPThumb是一个强大且灵活的PHP图像处理工具,能够满足大多数图片缩略图生成的需求,而且易于集成到现有的PHP项目中。通过深入理解和实践,开发者可以充分利用其特性,提升网站的图片处理能力。
介绍一个多功能的php图片处理类,图片处理函数功能:缩放、剪切、相框、水印、锐化、旋转、翻转、透明度、反色,处理并保存历史记录的思路:当有图片有改动时自动生成一张新图片,命 名方式可以考虑在原图片的基础上...
首先,介绍的是Node.js和PHP实现图片访问实时处理的方法。这些方法能够根据用户的请求,实时地对图片进行处理,比如缩放图片的尺寸、添加模糊效果或水印等。这在网站运营中非常有用,因为能大大降低服务器的图片资源...
在PHP中,图像处理是一项常见的任务,特别是在网站开发中,我们经常需要对用户上传的图片进行缩放、添加水印或者裁剪等操作。这个"php图像处理类.zip"文件提供了一个专门用于图像处理的PHP类库,它可以帮助开发者更...
只调用基本组件实现图像处理 处理效果还是不错滴 处理算法转换自论坛 一波实用的图片处理算法.适用于二值化 验证码 图色分离 图片美化.纯源码https://bbs.125.la/forum.php?mod=viewthreadtid=14597031
该图片处理函数功能:缩放、剪切、相框、水印、锐化、旋转、翻转、透明度、反色,处理并保存历史记录的思路:当有图片有改动时自动生成一张新图片,命名方式可以考虑在原图片的基础上加上步骤,例如:图片名称 __第...