`
muyu
  • 浏览: 218265 次
  • 性别: 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_imagick实现图片剪切、旋转、锐化、减色或增加特效的方法

    本文实例讲述了php_imagick实现图片剪切、旋转、锐化、减色或增加特效的方法。分享给大家供大家参考。具体分析如下: 一个可以供PHP调用ImageMagick功能的PHP扩展。使用这个扩展可以使PHP具备和ImageMagick相同的...

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

    主要汇总介绍了php图片处理类(水印、透明度、缩放、锐化),非常的简单实用,有需要的小伙伴可以参考下

    多功能的php图片处理类

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

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

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

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

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

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

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

    php_imagick ImageMagick

    ImageMagick是一套功能强大、...利用ImageMagick,你可以根据web应用程序的需要动态生成图片, 还可以对一个(或一组)图片进行改变大小、旋转、锐化、减色或增加特效等操作,并将操作的结果以相同格式或其它格式保存。

    Imagic的用法,代替GD库

    一个可以供PHP调用ImageMagick...利用ImageMagick,你可以根据web应用程序的需要动态生成图片, 还可以对一个(或一组)图片进行改变大小、旋转、锐化、减色或增加特效等操作,并将操作的结果以相同格式或其它格式保存。

    php实现的通用图片处理类

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

    onlineps在线处理图片 v1.0.zip

    •图像锐化 •图像单色 •图像着色 •图像马赛克 •图像旋转 •提高亮度 •降低亮度 •提高饱和度 •降低饱和度 •提高色调 •降低色调 •图像裁剪 •图像模糊 •图像噪声 •油画效果 •炭笔效果 •...

    PHP使用imagick读取PDF生成png缩略图的两种方法

    利用ImageMagick,你可以根据web应用程序的需要动态生成图片, 还可以对一个(或一组)图片进行改变大小、旋转、锐化、减色或增加特效等操作,并将操作的结果以相同格式或其它格式保存。二、php_imagick什么一个可以...

    PHP图片处理类 phpThumb参数用法介绍

    phpThumb几个基本参数 一些有用的参数列一下: src:目标图片的地址 w:输出图片的宽度 h:输出图片的高度(如果不指定他将按w参数等比缩放) q:输出如果是JPG格式的,可以规定它的输出质量 bg:输出时的背景(如果...

    ImageMagick

    还可以对一个(或一组)图片进行改变大小、旋转、锐化、减色或增加特效等操作,并将操作的结果以相同格式或其它格式保存,对图片的操作,即可以通过命令行进行,也可以用C/C++、Perl、Java、PHP、Python或Ruby编程...

    ImageMagick-6.8.5

    还可以对一个(或一组)图片进行改变大小、旋转、锐化、减色或增加特效等操作,并将操作的结果以相同格式或其它格式保存,对图片的操作,即可以通过命令行进行,也可以用C/C++、Perl、Java、PHP、Python或Ruby编程...

    ImageMagick-6.6.9-5.tar.gz

    利用ImageMagick,你可以根据web应用程序的需要动态生成图片, 还可以对一个(或一组)图片进行改变大小、旋转、锐化、减色或增加特效等操作,并将操作的结果以相同格式或其它格式保存。对图片的操作,即可以通过...

    利用php_imagick实现复古效果的方法

    利用ImageMagick,你可以根据web应用程序的需要动态生成图片, 还可以对一个(或一组)图片进行改变大小、旋转、锐化、减色或增加特效等操作,并将操作的结果以相同格式或其它格式保存。 php_imagick程序示例 1.创建...

    ImageMagick-6.8.4-0-Q16-x86-dll

    还可以对一个(或一组)图片进行改变大小、旋转、锐化、减色或增加特效等操作,并将操作的结果以相同格式或其它格式保存,对图片的操作,即可以通过命令行进行,也可以用C/C++、Perl、Java、PHP、Python或Ruby编程...

Global site tag (gtag.js) - Google Analytics