`
muyu
  • 浏览: 222665 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

PHP锐化图片

 
阅读更多

简单验证码的识别步骤有:黑白、锐化、切分、建模。

说说如何锐化,我从网上找到一个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线上手册注释。

有了清晰的、无干扰点的图片,剩下的事情,就很简单了。

 

分享到:
评论

相关推荐

    一个PHP多功能图片处理类库

    7. **滤镜效果**:为了增强图片的艺术效果,类库可能还提供了如模糊、锐化、对比度、饱和度等滤镜功能。 8. **批处理**:对于大量图片的处理,批处理功能能大大提高效率。这个类库可能支持一次性处理多个文件,节省...

    功能强大的PHP图片处理类(水印、透明度、旋转)

    在描述中,这些功能被具体化为图片处理类的能力,包括水印、透明度、缩放、锐化。标签则简明扼要地强调了这些功能都属于PHP图片处理的范畴。 在PHP中,图片处理通常通过GD库或ImageMagick扩展来实现。这些功能包括...

    flash-php的图片处理工具

    "Flash-Php的图片处理工具"是专门为PHP开发的一款用于图片管理、编辑和优化的软件工具,它可以帮助开发者轻松地实现各种图片操作。在这个压缩包文件`flash_img_tool`中,可能包含了实现这些功能的相关代码、库文件、...

    功能很全的PHP图片处理类

    通过`$SHARP`变量可以调整图片的锐化程度,以增强图片细节。 7. **错误处理**: 类中定义了一个错误数组`$ERROR`,当图片处理过程中出现问题时,会输出对应的错误信息。 类的构造函数`__construct($PICTURE_URL)...

    php实现的通用图片处理类

    在开发涉及图片处理的Web应用时,这个类能够帮助我们对图片进行尺寸缩放、裁剪、添加相框、水印、锐化、旋转、翻转、调整透明度、反色等操作。 在实现通用图片处理类的过程中,通常会涉及到以下核心知识点: 1. ...

    PHP之Grafika图片处理

    Grafika提供了丰富的功能,包括添加文字、调整颜色、拼接图片以及应用多种滤镜,使得PHP在图像处理方面的能力大大增强。下面,我们将深入探讨Grafika的主要特性和使用方法。 1. **安装与引入** 在开始使用Grafika...

    功能强大的php图片缩略图类

    4. **滤镜效果**:`timthumb.php` 还可能包含一些基本的图像处理功能,如灰度、模糊、锐化等滤镜,以增强或改变图片效果。 5. **水印**:支持添加文字或图像水印,为版权保护或品牌宣传提供便利。 6. **缓存机制**...

    多功能的php图片处理类

    一个多功能的php图片处理类,图片处理函数功能:缩放、剪切、相框、水印、锐化、旋转、翻转、透明度、反色,处理并保存历史记录的思路:当有图片有改动时自动生成一张新图片,命 名方式可以考虑在原图片的基础上加上...

    Glide一个请求式的图片处理PHP库

    此外,它还提供了丰富的滤镜功能,如模糊、锐化、对比度调整等,让你可以轻松定制图片效果。 安全方面,Glide通过签名机制防止恶意请求,确保只有经过授权的请求才能处理图片。你还可以设置允许的最大尺寸和质量...

    图片完美缩放代码

    然后,通过PHP代码调用该库,传入原始图片路径和所需参数,即可生成理想的缩放图片。 例如,以下是一个简单的phpThumb使用示例: ```php &lt;?php require_once('phpthumb.class.php'); $thumb = new phpThumb(); $...

    PHP图像处理程序

    在实际项目中,PHP图像处理程序常用于网站头像上传、图片裁剪、缩略图生成、动态验证码生成等场景。例如,用户上传一张大尺寸照片,我们可以用PHP和GD2处理成适合显示的缩略图,减少服务器存储空间并加快网页加载...

    PHP实例开发源码—PHPThumb自动图片缩略图类.zip

    总的来说,PHPThumb是一个强大且灵活的PHP图像处理工具,能够满足大多数图片缩略图生成的需求,而且易于集成到现有的PHP项目中。通过深入理解和实践,开发者可以充分利用其特性,提升网站的图片处理能力。

    多功能的php图片处理类.zip

    介绍一个多功能的php图片处理类,图片处理函数功能:缩放、剪切、相框、水印、锐化、旋转、翻转、透明度、反色,处理并保存历史记录的思路:当有图片有改动时自动生成一张新图片,命 名方式可以考虑在原图片的基础上...

    nodejs和php实现图片访问实时处理

    首先,介绍的是Node.js和PHP实现图片访问实时处理的方法。这些方法能够根据用户的请求,实时地对图片进行处理,比如缩放图片的尺寸、添加模糊效果或水印等。这在网站运营中非常有用,因为能大大降低服务器的图片资源...

    php图像处理类.zip

    在PHP中,图像处理是一项常见的任务,特别是在网站开发中,我们经常需要对用户上传的图片进行缩放、添加水印或者裁剪等操作。这个"php图像处理类.zip"文件提供了一个专门用于图像处理的PHP类库,它可以帮助开发者更...

    【火山PC】画板实现图像处理,二值化、反色、灰度、锐化、色调-易语言

    只调用基本组件实现图像处理 处理效果还是不错滴 处理算法转换自论坛 一波实用的图片处理算法.适用于二值化 验证码 图色分离 图片美化.纯源码https://bbs.125.la/forum.php?mod=viewthreadtid=14597031

    php实现的通用图片处理类.zip

    该图片处理函数功能:缩放、剪切、相框、水印、锐化、旋转、翻转、透明度、反色,处理并保存历史记录的思路:当有图片有改动时自动生成一张新图片,命名方式可以考虑在原图片的基础上加上步骤,例如:图片名称 __第...

Global site tag (gtag.js) - Google Analytics