zoukankan      html  css  js  c++  java
  • php gd 生成日历图

      1 <?php
      2 
      3 //如果您提交了时间则显示您提交年月的日历,否则显示当前月份日历
      4 if (isset($_GET['month']) && isset($_GET['year']))
      5 {
      6     $month = $_GET['month'];
      7     $year = $_GET['year'];
      8 }
      9 else 
     10 {
     11     $month = date ('m');
     12     $year = date ('Y');
     13 }
     14 $weekid = date ('w',mktime(0,0,0,$month,1,$year));//某年某月第一天是星期几。0-7分别代表星期日-星期六
     15 $countdays = date('t',mktime(0,0,0,$month,1,$year));//某年某个月的天数
     16 //获取上个月的天数
     17 $prevMonth = $month - 1;
     18 $prevYear = $year;
     19 if($prevMonth == 0){
     20     $prevMonth = 12;
     21     $prevYear = $year - 1;
     22 }
     23 $prevMonthDays = date('t',mktime(0,0,0,$prevMonth,1,$prevYear));//某年某个月的上个月的天数
     24 //echo $prevMonthDays."<br/>";
     25 //echo $prevMonth."<br/>";
     26 $countdays = date('t',mktime(0,0,0,$month,1,$year));//某年某个月的天数
     27 $arr_days = array ();//数组$arr_days代表某个月的每一天
     28 //echo $weekid."<br/>";
     29 //echo $countdays."<br/>";
     30 //print_r($arr_days);
     31 $tempweekid = $weekid-1; //用于计算上个月前面的天数
     32 //初始化数组$arr_days
     33 for ($i = 0; $i <= 35; $i++)
     34 {
     35     if($tempweekid >=0){
     36         $arr_days[$i] = $prevMonthDays - $tempweekid;
     37         $tempweekid--;
     38     }else{
     39         $arr_days[$i] = "";
     40     }
     41     
     42 }
     43 
     44 //给$arr_days数组赋值
     45 for ($i = $weekid, $j = 1; $j <= $countdays; $i++, $j++)
     46 {
     47     $arr_days[$i] = $j;
     48 }
     49 
     50 header("Content-type: image/png");
     51 $im = @imagecreate(300, 185)
     52     or die("Cannot Initialize new GD image stream");
     53 $background_color = imagecolorallocate($im, 255, 255, 255);
     54 
     55 
     56 // Create some colors
     57 $white = imagecolorallocate($im, 255, 255, 255);
     58 $grey = imagecolorallocate($im, 128, 128, 128);
     59 $black = imagecolorallocate($im, 0, 0, 0);
     60 $red = imagecolorallocate($im, 255, 37, 37);
     61 $color2 = imagecolorallocatealpha($im,0,0,0,0);
     62 
     63 $alphagray = imagecolorallocatealpha($im,205,206,206,0);
     64 $alphared = imagecolorallocatealpha($im,255,206,206,0);
     65 
     66 $font = './gillsans.ttf';
     67 $text = "SU";
     68 
     69 $titleArray = array("SUN","MON","TUE","WED","THU","FRI","SAT");
     70 $font_x = 20;
     71 $font_y = 20;
     72 foreach($titleArray as $key=>$value){
     73 // Add some shadow to the text
     74     imagettftext($im, 12, 0, $font_x, $font_y, $color2, $font, $value);    
     75     $font_x +=40;
     76 }
     77 
     78 
     79 $font_x = 20;
     80 $font_y = 45;
     81 
     82     //表格输出
     83 for ($i = 0; $i <= 35; $i++)
     84 {
     85     $row = $arr_days[$i];
     86     $tempFontx = $font_x;
     87     if($row < 10){
     88         $tempFontx +=5;
     89     }
     90     
     91     
     92     
     93     if ($i % 7 == 0)
     94     {
     95         
     96         if($i < 7 && $row > 7){
     97             imagettftext($im, 12, 0, $tempFontx, $font_y, $alphared, $font, $row);    
     98         }else{
     99             imagettftext($im, 12, 0, $tempFontx, $font_y, $red, $font, $row);    
    100         }
    101         
    102         
    103         $font_x +=40;
    104     }else{
    105         if($i < 7 && $row > 7){
    106             imagettftext($im, 12, 0, $tempFontx, $font_y, $alphagray, $font, $row);    
    107         }else{
    108             imagettftext($im, 12, 0, $tempFontx, $font_y, $color2, $font, $row);
    109         }    
    110             
    111         $font_x +=40;
    112     }
    113     
    114     if (($i + 1) % 7 == 0)
    115     {
    116         $font_x = 20;
    117         $font_y += 25;
    118     }
    119 }
    120 
    121 // Add the text
    122 imagepng($im,"./".$year.$month.".png");
    123 //imagepng($im);
    124 imagedestroy($im);
    View Code

    使用的字体Font: http://pan.baidu.com/s/1jGBzrM2

    最终效果:

    参考文章:用php实现的一个简单万年历

  • 相关阅读:
    索引的实现:B+树
    SQL Server 查
    SQL Server 增、删、改、小部分查
    最最最最最基础的SQL Server
    三大范式
    SQLserver数据类型
    第一阶段项目
    2017.10.17一阶段项目心得
    jquery&bootstrap
    国庆小长假结束后的一阶段小测验
  • 原文地址:https://www.cnblogs.com/fsong/p/4672824.html
Copyright © 2011-2022 走看看