• php验证码+缩略图+饼状图+五环图+获取php生成的png图标的信息+二进制与十进制和十六进制之间的转化(替换颜色值)


    @1.验证码

     1 captcher.php
     2 header('Content-type:image/png');
     3 session_start();
     4 $img = imagecreate(100, 30);
     5 $captcha = array(
     6     'a', 'b', 'c', 'd', 'e', 'f',
     7     'g', 'h', 'i', 'j', 'k', 'l',
     8     'm', 'n', 'o', 'p', 'q', 'r',
     9     's', 't', 'u', 'v', 'w', 'x',
    10     'y', 'z', '0', '1', '2', '3',
    11     '4', '5', '6', '7', '8', '9');
    12 $code = '';
    13 for($i=0;$i<4;$i++)
    14 {
    15     $code.=' '.$captcha[rand(0,35)];
    16 }
    17 $_SESSION['captcha'] = $code;
    18 $bg  =  imagecolorallocate ( $img ,  255 ,  255 ,  255 );
    19 $textcolor  =  imagecolorallocate ( $img ,  0 ,  0 ,  255 );
    20 imagestring($img, 5, 10, 5, $code, $textcolor);
    21 imagepng($img);
    22 imagedestroy($img);
    23 
    24 captcher.html
    25 <script type="text/javascript" src="jquery-2.1.1.js"></script>
    26 <div style="100px;height:30px;" >
    27 <image id="captcher" src="test.php" style="100px;height:30px;border:1px solid #ff0000;"/>
    28 </div>
    29 <script>
    30     $("#captcher").click(function(){
    31         this.src = 'test.php?id='+Math.random();
    32     });
    33 </script>

    @2.缩略图

      1 header("Content-type:image/png");
      2 function img2thumb($src_img, $dst_img, $width = 75, $height = 75, $cut = 0, $proportion = 0)
      3 {
      4     if(!is_file($src_img))
      5     {
      6         return false;
      7     }
      8     $ot = fileext($dst_img);
      9     $otfunc = 'image' . ($ot == 'jpg' ? 'jpeg' : $ot);
     10     $srcinfo = getimagesize($src_img);
     11     $src_w = $srcinfo[0];
     12     $src_h = $srcinfo[1];
     13     $type  = strtolower(substr(image_type_to_extension($srcinfo[2]), 1));
     14     $createfun = 'imagecreatefrom' . ($type == 'jpg' ? 'jpeg' : $type);
     15 
     16     $dst_h = $height;
     17     $dst_w = $width;
     18     $x = $y = 0;
     19 
     20     /**
     21      * 缩略图不超过源图尺寸(前提是宽或高只有一个)
     22      */
     23     if(($width> $src_w && $height> $src_h) || ($height> $src_h && $width == 0) || ($width> $src_w && $height == 0))
     24     {
     25         $proportion = 1;
     26     }
     27     if($width> $src_w)
     28     {
     29         $dst_w = $width = $src_w;
     30     }
     31     if($height> $src_h)
     32     {
     33         $dst_h = $height = $src_h;
     34     }
     35 
     36     if(!$width && !$height && !$proportion)
     37     {
     38         return false;
     39     }
     40     if(!$proportion)
     41     {
     42         if($cut == 0)
     43         {
     44             if($dst_w && $dst_h)
     45             {
     46                 if($dst_w/$src_w> $dst_h/$src_h)
     47                 {
     48                     $dst_w = $src_w * ($dst_h / $src_h);
     49                     $x = 0 - ($dst_w - $width) / 2;
     50                 }
     51                 else
     52                 {
     53                     $dst_h = $src_h * ($dst_w / $src_w);
     54                     $y = 0 - ($dst_h - $height) / 2;
     55                 }
     56             }
     57             else if($dst_w xor $dst_h)
     58             {
     59                 if($dst_w && !$dst_h)  //有宽无高
     60                 {
     61                     $propor = $dst_w / $src_w;
     62                     $height = $dst_h  = $src_h * $propor;
     63                 }
     64                 else if(!$dst_w && $dst_h)  //有高无宽
     65                 {
     66                     $propor = $dst_h / $src_h;
     67                     $width  = $dst_w = $src_w * $propor;
     68                 }
     69             }
     70         }
     71         else
     72         {
     73             if(!$dst_h)  //裁剪时无高
     74             {
     75                 $height = $dst_h = $dst_w;
     76             }
     77             if(!$dst_w)  //裁剪时无宽
     78             {
     79                 $width = $dst_w = $dst_h;
     80             }
     81             $propor = min(max($dst_w / $src_w, $dst_h / $src_h), 1);
     82             $dst_w = (int)round($src_w * $propor);
     83             $dst_h = (int)round($src_h * $propor);
     84             $x = ($width - $dst_w) / 2;
     85             $y = ($height - $dst_h) / 2;
     86         }
     87     }
     88     else
     89     {
     90         $proportion = min($proportion, 1);
     91         $height = $dst_h = $src_h * $proportion;
     92         $width  = $dst_w = $src_w * $proportion;
     93     }
     94 
     95     $src = $createfun($src_img);
     96     $dst = imagecreatetruecolor($width ? $width : $dst_w, $height ? $height : $dst_h);
     97     $white = imagecolorallocate($dst, 255, 255, 255);
     98     imagefill($dst, 0, 0, $white);
     99 
    100     if(function_exists('imagecopyresampled'))
    101     {
    102         imagecopyresampled($dst, $src, $x, $y, 0, 0, $dst_w, $dst_h, $src_w, $src_h);
    103     }
    104     else
    105     {
    106         imagecopyresized($dst, $src, $x, $y, 0, 0, $dst_w, $dst_h, $src_w, $src_h);
    107     }
    108     $otfunc($dst, $dst_img);
    109     $image = imagepng($dst);
    110     //print_r($dst);
    111     imagedestroy($dst);
    112     imagedestroy($src);
    113     return $image;
    114 }
    115 function fileext($file)
    116 {
    117     return pathinfo($file, PATHINFO_EXTENSION);
    118 }
    119 
    120 $img = img2thumb('cj.png', 'chen.png', 100, 100, 5, 0.6);

     @3.饼状图

     1 $image = imagecreatetruecolor(100, 100);
     2 
     3 $white    = imagecolorallocate($image, 0xFF, 0xFF, 0xFF);
     4 $gray     = imagecolorallocate($image, 0xC0, 0xC0, 0xC0);
     5 $darkgray = imagecolorallocate($image, 0x90, 0x90, 0x90);
     6 $navy     = imagecolorallocate($image, 0x00, 0x00, 0x80);
     7 $darknavy = imagecolorallocate($image, 0x00, 0x00, 0x50);
     8 $red      = imagecolorallocate($image, 0xFF, 0x00, 0x00);
     9 $darkred  = imagecolorallocate($image, 0x90, 0x00, 0x00);
    10 
    11 for ($i=60; $i>50; $i--) {
    12     imagefilledarc($image, 50, $i, 100, 50, 0, 45, $darknavy, IMG_ARC_PIE);
    13     imagefilledarc($image, 50, $i, 100, 50, 45, 75 , $darkgray, IMG_ARC_PIE);
    14     imagefilledarc($image, 50, $i, 100, 50, 75, 360 , $darkred, IMG_ARC_PIE);
    15 }
    16 imagefilledarc($image, 50, 50, 100, 50, 0, 45, $navy, IMG_ARC_PIE);
    17 imagefilledarc($image, 50, 50, 100, 50, 45, 75 , $gray, IMG_ARC_PIE);
    18 imagefilledarc($image, 50, 50, 100, 50, 75, 360 , $red, IMG_ARC_PIE);
    19 
    20 header('Content-type: image/png');
    21 imagepng($image);
    22 imagedestroy($image);

    @4.五环图

     1 $size = 450;
     2 $image = imagecreatetruecolor($size, 280);
     3 $back = imagecolorallocate($image, 255, 255, 255);
     4 $border = imagecolorallocate($image, 0, 0, 0);
     5 
     6 imagefilledrectangle($image, 0, 0, $size-1, $size-1, $back);
     7 imagerectangle($image, 0, 0, $size-1, $size-1, $border);
     8 
     9 
    10 $yellow_x = 100;
    11 $yellow_y = 85;
    12 $red_x = $yellow_x + 120;
    13 $red_y = $yellow_y;
    14 $blue_x   = $yellow_x + 240;
    15 $blue_y   = $yellow_y;
    16 $radius   = 150;
    17 $green_x = $yellow_x +60;
    18 $green_y = 180;
    19 $red_low_x = $green_x + 120;
    20 $red_low_y = $green_y;
    21 
    22 $yellow = imagecolorallocatealpha($image, 255, 255, 0,75);
    23 $red = imagecolorallocatealpha($image, 255, 0, 0, 75);
    24 $blue = imagecolorallocatealpha($image, 0, 0, 255, 75);
    25 $green = imagecolorallocatealpha($image, 0, 255, 0, 75);
    26 $red_low = imagecolorallocatealpha($image, 255, 0, 255, 75);
    27 
    28 imagefilledellipse($image, $yellow_x, $yellow_y, $radius, $radius, $yellow);
    29 imagefilledellipse($image, $red_x, $red_y, $radius, $radius, $red);
    30 imagefilledellipse($image, $blue_x, $blue_y, $radius, $radius, $blue);
    31 imagefilledellipse($image, $green_x, $green_y, $radius, $radius, $green);
    32 imagefilledellipse($image, $red_low_x, $red_low_y, $radius, $radius, $red_low);
    33 
    34 header('Content-Type:image/png');
    35 
    36 imagepng($image);
    37 imagedestroy($image);

     @5获取php生成的png图标信息

    1 <?php 
    2 $img = imagecreatetruecolor(1024, 1024);   // 新建一个真彩色图像
    3 $text_color = imagecolorallocate($img, 0, 255, 255); 
    4 imagettftext($img, 20, 0, 150, 650, $text_color, 'arial.ttf', 'fendor陈' );   // 相对应的字体如arial.ttf要自己下载后放入本地文件中调用 
    5 ob_start();            // 打开输出缓冲
    6 imagepng($img);
    7 $binary = ob_get_contents();  // 获取二进制码后就可以用处理图片二进制码的方式获取图标的信息了
    8 ob_end_clean();
    9 imagedestroy();

     @6二进制与十进制和十六进制之间的转化(替换颜色值)

     1 <?php
     2 /**
     3 * 将十六进制颜色转化为rgb格式
     4 */
     5 function hex2rgb($colour) {
     6         if ($colour [0] == '#') {
     7             $colour = substr ( $colour, 1 );
     8         }
     9         if (strlen ( $colour ) == 6) {
    10             list ( $r, $g, $b ) = array ($colour [0] . $colour [1], $colour [2] . $colour [3], $colour [4] . $colour [5] );
    11         } elseif (strlen ( $colour ) == 3) {
    12             list ( $r, $g, $b ) = array ($colour [0] . $colour [0], $colour [1] . $colour [1], $colour [2] . $colour [2] );
    13         } else {
    14             return false;
    15         }
    16         $r = hexdec ( $r );
    17         $g = hexdec ( $g );
    18         $b = hexdec ( $b );
    19         return $r . ',' . $g . ',' . $b;
    20 }
    21 
    22 $color = '#eb6695';
    23 $rgb = hex2rgb($color);
    

    hexdec($str);十六进制转十进制

    dechex($str):十进制转十六进制

    decbin($str):十进制转二进制

    bindec($str):二进制转十进制

    octdec($str):八进制转十进制

    decoct($str):十进制转八进制

    base_convert($str, $frombase, $tobase);将$str在$frombase和$tobase之间转换

    总结:hex表示十六进制,dec表示十进制, bin表示二进制,oct表示八进制

  • 相关阅读:
    (难)Codeforces Round #406 (Div. 2) C题Berzerk(有向图博弈)解题报告
    jquery清空kindEditor
    处理用户误输入html标签引起的网站布局混乱
    自动闭合所有标签的方法,用于获得textBox等值的时候,标签都是闭合的
    .NET一个页面多个Button按钮事件避免数据验证控件RequiredFieldValidator
    基类包括字段(),但其类型()与控件()的类型不兼容
    关于ajax回调数据类型为Json,如何获得他的值
    如何查找Repeater控件中嵌套的控件
    网站功能
    WIN7系统IIS上发布站点后水印效果失效的解决方法
  • 原文地址:https://www.cnblogs.com/eyeSpace/p/3823274.html
Copyright © 2020-2023  润新知