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);

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

最终效果:

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

时间: 2024-11-06 21:07:40

php gd 生成日历图的相关文章

添加ModelGoon插件Eclipse自动生成UML图

下载ModelGoonjar包 http://download.csdn.net/detail/u011070297/8366021 下载完该jar之后,直接拷贝到Eclipse安装目录下的dropins目录下,重启Eclipse即可  如何使用 安装成功后,file=>new=>other菜单里面会多出一项ModelGoon Diagrams,在自己已有的java工程中新建一个class diagram,用以生成类图.创建完成后你会发现生成了一个.mgc后缀的文件,现在你可以用这个文件创建自

highcharts实例教程一:结合php与mysql生成折线图

Highcharts是一款纯javascript和html5编写的图表库,不仅几乎能兼容所有pc浏览器,而且对ios和android手机端的兼容 性也不错,它能够很简单便捷的在Web网站或Web应用中添加交互性的图表,Highcharts目前支持直线图.折线图.面积图.柱状图.饼图.散点图 等多达28种不同类型的图表,还支持3D立体图表的生成,可以满足你对Web图表的任何需求 !而且Highcharts对学习者.非商业机构是免费使用的. 案例场景:要求针对技术cto网站,直观地显示一周网站pv.

用Enterprise Architect从源码自动生成类图

http://blog.csdn.net/zhouyong0/article/details/8281192 /*references:感谢资源分享者.info:简单记录如何通过工具从源码生成类图,便于分析代码结构,对源码阅读挺有用.*/ 看点开源代码学习下,本想找个代码查看方便点的工具,便于理清代码层次,结果发现了Enterprise Architect这一好工具,试用下来还挺方便的.功能上和Rational Rose大致是一类,用处很广,很多我都不懂,知道能画各种UML图,支持的源码语言类型

银光甘特图/日历图/排程控件GTP.NET for Silverlight详细介绍

GTP.NET for Silverlight是Silverlight下的控件包,提供了交互式的甘特图以及日程安排图,达到时间上可视化和交互,控件完全分发免费.方案网作为PlexityHide在中国的核心代理商,为客户提供优质的客服和技术支持.                          具体功能: 提供了丰富的用户界面直接运行于Silverlight插件下 使用Silverlight开发,达到了跨平台的目的,包括Apple Machintosh和 Microsoft Windows 提供

用mysql workbench生成ER图

下载安装mysql workbench 画图啦 白白 下载安装mysql workbench 首先是下载mysql workbench,windows系统的自己百度,我用的是ubuntu 14.04LTS,百度到的结果有点坑,叫我去官网,但是选择平台后就没下文了T_T,最后忽然想起系统自带有软件中心,直接去本机自带的ubuntu softwore center查找,安装就好了. 画图啦 如何让workbench根据数据库表的结构,自动生成ER图呢?这需要用到逆向工程!!!!顾名思义就好,我只是个

Asp.net mvc 实时生成缩率图到硬盘

之前对于缩率图的处理是在图片上传到服务器之后,同步生成两张不同尺寸的缩率供前端调用,刚开始还能满足需求,慢慢的随着前端展示的多样化,缩率图已不能前端展示的需求,所以考虑做一个实时生成图片缩率图服务. 每次调用实时生成缩率图,不缓存着实有点浪费,所以在生成缩率的同时缓存到硬盘一份,效率提高很多. 之前从网上看了一下有人用nginx + lua实现的,效率那是没什么可说的,但是时间紧迫,自己也没时间去研究,所以暂时先用aps.net mvc4来实现 一个,以后有时间了,再慢慢修改. 用自己熟悉的.n

eclipse自动生成类图

怎么从java类自动转换成java类图,一直没搞成.于是,我在网上找了一款更强大的自动生成java类图的eclipse插件--ModelSpoon..这个兄弟很强大,只要把.java文件直接拖进去,它就能够直接生成java类图.非常好用. 2.安装和使用ModelSpoon功能:能将Eclipse中现有的java类生成类图一:什么是ModelGoon?它是一个Eclipse插件,用于基于UML图的模型设计,以及逆向工程(即从已有源代码生成类图).二:安装下载ModelGoon-4.4.1-sit

使用RetionalRose根据现有的java工程逆向生成类图

1.进入RetionalRose选择J2EE模板 2.在菜单栏选择tools->java/j2EE->reverse engineer 3.编辑路径Edit CLASSPATH选择要生成类图的Java项目src文件 4.点击含有java源文件的文件夹,再点击Add Recursive按钮 5.先点击selectAll再点击Reverse 6.点击Done完成,java工程代码中描绘的类都已出现在左侧的LogicalView中,可以新建类图后拖拽将其显示出来

chart.js插件生成折线图时数据普遍较大时Y轴数据不从0开始的解决办法[bubuko.com]

chart.js插件生成折线图时数据普遍较大时Y轴数据不从0开始的解决办法,原文: 默认情况下如下图 Y轴并不是从0开始,这样折现图的幅度会很大,不是正常的幅度,解决办法如下, 示例代码: window.onload = function () { var ctx = document.getElementById("canvas").getContext("2d"); window.myLine = new Chart(ctx).Line(lineChartDat