当前位置:首页 > CN2资讯 > 正文内容

微型php框架 library/image.class.php

2天前CN2资讯

<?php

// 验证码类


class p_w_picpath {

    protected $im;

    protected $img_width;

    protected $img_height;

    protected $img_type;

    

    // 生成随机数

    static public function randStr($n = 4) {

        if($n <= 0) {

            return '';

        }


        $str = 'abcdefghijkmnpqrstuvwxyzABCDEFGHIJKMNPQRSTUVWXYZ0123456789';

        $str = substr(str_shuffle($str),0,$n);


        return $str;

    }

    

    

    // 生成验证码

    static public function chkcode($w=60,$h=25) {

        // $w 宽, $h 高

        $code = self::randStr(4);


        // 造画布

        $im = p_w_picpathcreatetruecolor($w,$h);

        $bak = p_w_picpathcreatetruecolor($w,$h);


        // 造颜色,灰底+蓝字

        $gray = p_w_picpathcolorallocate($im,100,100,100);

        $blue = p_w_picpathcolorallocate($im,0,0,255);

        $bak_gray = p_w_picpathcolorallocate($bak,100,100,100);

        

        // 填充

        p_w_picpathfill($im,0,0,$gray);

        p_w_picpathfill($bak,0,0,$bak_gray);


        // 写字

        p_w_picpathstring($im,5,10,5,$code,$blue);


        /*****

         把验证码存储到session里

        *****/


        /*****

         把验证码的字符扭曲,供参考,不要求.

        


        $niu = 3;

        for($i=0;$i<60;$i++) {

            // 按正弦函数计算Y轴的波动

            $y = sin(deg2rad((720/$w) * $i)) * $niu;            

            p_w_picpathcopy($bak,$im,$i,$y,$i,0,1,$h);

        }

        *****/


        header('content-type: p_w_picpath/jpeg');

        p_w_picpathjpeg($bak);

    }


    static public function make_thumb($ori,$w=200,$h=200) {

        // 判断原图大小,如果原图比缩略还小,不必处理.


        // 读出大图当画布

        $info = self::getinfo($ori);

        if($info['func'] === false) {

            return false;

        }


        $createfunc = 'p_w_picpathcreatefrom' . $info['func']; // 分析出读取大图所用的函数名.

        $src = $createfunc($ori);


        // 创建小画布,并把背景做成灰色

        $small = p_w_picpathcreatetruecolor($w,$h);

        $gray = p_w_picpathcolorallocate($small,100,100,100);

        p_w_picpathfill($small,0,0,$gray);


        // 复制大图到小图

        $scale = min($w/$info['width'], $h/$info['height']); // 以更小的缩小比例为准,才能装下


        // 根据比例,算最终复制过去的块的大小.

        $realw = $info['width'] * $scale;

        $realh = $info['height'] * $scale;


        // 生成小图

        /*

        bool p_w_picpathcopyresampled ( resource $dst_p_w_picpath , resource $src_p_w_picpath , int $dst_x , int $dst_y , int $src_x , int $src_y , int $dst_w , int $dst_h , int $src_w , int $src_h )

        */


        // 计算留白

        $lw = round(($w - $realw)/2); // 计算左侧留的宽度

        $lh = round(($h - $realh)/2); // 计算上部留的高度


        p_w_picpathcopyresampled($small,$src,$lw,$lh,0,0,$realw,$realh,$info['width'],$info['height']);


        /*

        header('content-type: p_w_picpath/jpeg');

        p_w_picpathjpeg($small);

        */


        // 计算小图片的存储路径

        $thumburl = str_replace('.','_thumb.',$ori);

        $p_w_picpathfunc = 'p_w_picpath' . $info['func'];


        if($p_w_picpathfunc($small,$thumburl)) {

            return str_replace(ROOT,'',$thumburl);

        } else {

            return false;

        }



    }


    static public function getinfo($ori) {

        $arr = getp_w_picpathsize($ori);


        // 如果原始图片分析不出来,直接false

        if($arr === false) {

            return false;

        }

        

        $info = array();

        

        $info['width'] = $arr[0];

        $info['height'] = $arr[1];

        

        switch($arr[2]) {

            case 1:

            $info['func'] = 'gif';

            break;


            case 2:

            $info['func'] = 'jpeg';

            break;


            case 3:

            $info['func'] = 'png';

            break;


            case 6:

            $info['func'] = 'wbmp';

            break;


            default:

            $info['func'] = false;

        

        }


        return $info;

    }



}



p_w_picpath::chkcode();


?>


    你可能想看:

    扫描二维码推送至手机访问。

    版权声明:本文由皇冠云发布,如需转载请注明出处。

    本文链接:https://www.idchg.com/info/26566.html

    分享给朋友:

    “微型php框架 library/image.class.php” 的相关文章

    UCloud年付100元的云服务选择与优势解析

    在开始探讨UCloud的计费方式之前,我想先分享一下我对云服务费用的一些理解和看法。在如今的数字化时代,选择合适的云服务提供商至关重要,计费方式也应兼顾灵活性和经济性。我在UCloud上体验过不同的计费方式,从中得出了一些实用的建议。 UCloud提供的计费方式相当多样,特别是在按年计费这一块。对于...

    如何使用NameSilo优惠码享受域名注册折扣

    在寻找域名注册服务时,NameSilo可能是你一个不错的选择。它以其友好的价格和高质量的服务以及多样化的优惠活动而受到用户青睐。尤其当我第一次尝试注册域名时,NameSilo给我的第一印象便是其简单易用的注册流程和丰厚的折扣方式。 使用NameSilo的最大的优势之一,就是能够享受到各种折扣码。许多...

    IPv6 测速方法与工具:提升网络体验的技巧

    IPv6 测速的基本概念 IPv6,作为互联网协议的最新版本,让我们在网络世界中畅游无阻。它的推出旨在解决IPv4所面临的地址枯竭问题,推进更加广泛的设备连接。简单来说,IPv6提供了更大的地址空间,能够支持越来越多的设备上线。因为万物互联的时代已经来临,我们的手机、电脑、家居设备甚至汽车都需要连接...

    VPS硬盘清理:提升服务器性能的全面指南

    当我的VPS(虚拟专用服务器)磁盘满了时,事情往往会变得非常棘手。这不仅会导致应用程序的运行速度变慢,甚至可能引发系统崩溃或数据丢失。这样的状况让我不得不思考,定期进行硬盘清理的重要性。其实,维护良好的磁盘使用状况,对于确保服务器的整体性能至关重要。 首先,当VPS磁盘满了,系统的反应速度会明显下降...

    SSH工具:安全远程连接与数据传输的最佳选择

    SSH 工具概述 在网络安全日益受到重视的今天,SSH(Secure Shell Protocol)工具逐渐成为了我们进行安全远程连接的首选。简单来说,SSH 是一种加密的网络传输协议,它能在不安全的网络环境中提供安全的数据传输。这使得无论是在公司办公还是在家中,SSH 工具都极其重要,特别是对于那...

    掌握域名优惠,轻松获取注册及续费折扣

    什么是域名优惠? 在网络世界中,域名可以说是你的“家”,而域名优惠则是你入住这个“家”时所获取的折扣或者促销活动。简单来说,域名优惠就是在购买或者续费域名时,所享受到的价格减免。这种优惠通常由域名注册商提供,旨在吸引更多用户注册和使用他们的服务。我们可以看到,域名优惠不仅限于初次注册,也包括后期的续...