| Subcribe via RSS

CSS兼容IE6,IE7,FF

06月 29th, 2008 | No Comments | Posted in 程序开发

具体写法很容易:

#someNode
{
    position: fixed;
   #position: fixed;
   _position: fixed;
}
  • 第一排给Firefox以及其他浏览器看
  • 第二排给IE7(可能以后的IE8、IE9也是如此,谁知道呢)看
  • 第三排给IE6以及更老的版本看

最好的应用就是可以让IE6也“支持”position:fixed,而且,配合这个原理,可以做到不引入JavaScript代码(仅用IE6的expression),我这里有一个现成的页面,CSS如下写:

#ff-r
{
 position:  fixed;
_position:  absolute;
 right:     15px;
 top:       15px;
_top:       expression(eval(document.compatMode &&
            document.compatMode=='CSS1Compat') ?
            documentElement.scrollTop+15 :
            document.body.scrollTop +
            (document.body.clientHeight
            -this.clientHeight));
}
Tags:

Javascript解析URL的方法

06月 7th, 2008 | No Comments | Posted in 程序开发

URL : 统一资源定位符 (Uniform Resource Locator, URL)

完整的URL由这几个部分构成:
scheme://host:port/path?query#fragment

scheme = 通信协议 (常用的http,ftp,maito等)
host = 主机 (域名或IP)
port = 端口号
path = 路径

query = 查询
可选,用于给动态网页(如使用CGI、ISAPI、PHP/JSP/ASP/ASP.NET等技术制作的网页)传递参数,可有多个参数,用”&”符号隔开,每个参数的名和值用”=”符号隔开。

fragment = 信息片断
字符串,用于指定网络资源中的片断。例如一个网页中有多个名词解释,可使用fragment直接定位到某一名词解释。(也称为锚点.)

对于这样一个URL
http://www.qqcms.com:80/checklink/?ver=1.0&id=6#imhere

我们可以用javascript获得其中的各个部分
1, window.location.href
整个URl字符串(在浏览器中就是完整的地址栏)

2,window.location.protocol
URL 的协议部分
本例返回值:http:

3,window.location.host
URL 的主机部分
本例返回值:www.qqcms.com

4,window.location.port
URL 的端口部分
如果采用默认的80端口(update:即使添加了:80),那么返回值并不是默认的80而是空字符
本例返回值:””

5,window.location.pathname
URL 的路径部分(就是文件地址)
本例返回值:/checklink/

6,window.location.search
查询(参数)部分
除了给动态语言赋值以外,我们同样可以给静态页面,并使用javascript来获得相信应的参数值
本例返回值:?ver=1.0&id=6

7,window.location.hash
锚点
本例返回值:#imhere
 

Tags: ,

发现mysql又一强悍,group_concat的使用

02月 24th, 2008 | 2 Comments | Posted in 程序开发

对于group_concat的功能,其实在很早之前就有需求,原先的老方法是直接left jion 取出数据,然后通过php分离组合,浪费大大量的系统资源,而且分页和排序都比较复杂。

今天又有这一需求,就在网上找相关资料,找了很多关键字,都找不到,想到了concat的东西,然后加上group,果然,mysql早有此功能,让我又验证了一个道理,没有做不到,只有想不到,我们作为开发者所想的,人家系统早就想好了,所以,大家在开发过程中,大胆的想,大胆的去找。

GROUP_CONCAT()是MySQL数据库提供的一个函数,通常跟GROUP BY一起用,具体可参考MySQL官方文挡:http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group-concat

函数的语法:

GROUP_CONCAT([DISTINCT] expr [,expr ...]
              [ORDER BY {unsigned_integer | col_name | expr}
                  [ASC | DESC] [,col_name ...]]
              [SEPARATOR str_val])

More »

Tags: ,

css实现自动强制换行/强制不换行/自动换行

12月 30th, 2007 | No Comments | Posted in 程序开发

自动换行

div{
word-wrap: break-word;
word-break: normal;
}

强制不换行

div{
white-space:nowrap;
}

强制英文单词断行

div{
word-break:break-all;
}

Tags:

WinCVS进行版本控制

12月 20th, 2007 | No Comments | Posted in 程序开发

一、客户端的配置

启动pagent,添加私钥;启动wincvs,配置好preference选项(admin菜单里)

详情请见CVS客户端配置

让我悄悄告诉你,在preference里最好将“globe”选项卡中的“checkout read-only”置空,这可是tianyuan的秘技:)

二、初始化

如果你已经连上服务器,做过checkin、checkout等工作,可以略过这一步。

选择creat->>creat a new reporsitory,无需更改默认配置,确认即可。

如果一切正常,会在窗体下部的output窗口显示如下信息:

cvs -d :ext:monkey@monkeygro:/cvs/hrsystem init

*****CVS exited normally with code 0*****

第二行如果不是以“0”结尾,出现其他数字,就表明出错了。

三、上传文件(checkin)

窗体中部左边有一个explore页,点击它,选择你准备上传的文件夹;点击菜单栏的creat->>import module from selection,会跳出一个import filter窗体。如果你的文件里有错误,import filter窗体里就会有error或warn标志,如果真是这样,你最好还是先看一看有何问题。
下一个跳出的窗体是import setting,在select the module name and path on the remote server里面填上一个名称,当你的文件传上服务器后,cvs服务器里就会以这个名称建立一个代码库,存放刚才传上来的文件。

请记住,下拉框并没有什么神奇的功能,它只能记住你上次填进去的东西。

四、下载文件(checkout)

经过上一步操作,你在服务器里就有了源代码,所有的开发者可以开始工作了。

当然,开发者需要先下载一个拷贝到本地才能修改它。

1、建立本地工作目录

在自己的硬盘上新建一个目录,很多人都取名为“work”,表示这是工作目录。其实,这只是一个好习惯而已。

2、下载文件

选择creat->>checkout module,出现的窗体是checkout setting,在module name and path on the server中填写你在第三步(上传文件)中,上传到服务器中的模块名称。如果你记不住第三步你填写了什么,你可以先看一看本文的第九步。

五、修改与提交

1、edit与uedit命令现在,你可以准备修改源代码了。不过,当你到自己的本地工作目录中,可能会发现下载回来的文件都是只读的,这是因为你在第一步中preference中,没有将checkout read-only置空。

在wincvs中,你到窗体中部的module页中,找到自己准备修改的文件,在右边的浏览窗口里选中它,然后选择菜单栏中的trace->>edit selection,就可以将不可读的文件置为可读。

2、更新(update)

你喜欢那一种开发工具?VB、VC、JAVA还是DELPHI?现在你可以开始你异常熟悉的代码开发工作了。

无论你用那种工具,当你修改了工作目录中的文件后,在wincvs里,你就可以看到这个文件变成红色了。

有一个好习惯是,在你准备提交到服务器之前,先更新一下,因为有可能别的开发者在你修改这个文件的同时,也可能也修改了这个文件,这就有可能会存在冲突,我们总是在提交前先处理冲突。

更新的操作很简单:选中你修改了的文件,在菜单栏中选择modify,一般情况下,无需修改默认选项。

处理冲突请看本文第十节 冲突处理
六、标记(tag)

标记是版本控制中很重要的功能。

除了通常的作用,它还可以标记修改者,让大家知道,是谁提交了一个新版本。

在wincvs中选择准备标记的文件,然后在菜单栏中选择modify->>creat a tag on selection;马上creat tag setting窗体会出现,在new tag name中填入标记名即可。

七、分支的管理

我们在这里先详细说一下分支的作用。

我们设计了一个图书管理系统,把1.0版交给了客户A大学;然后我们继续开发,有了新版本1.1版、1.2、1.3……这时A大学告诉我们,1.0版本有bug,我们很快在1.0版本的源代码中找到了错误所在。

这时候,最简单的解决办法是给A大学一个bug patch。你会问,为什么不给客户最新版本?原因很简单:第一,我们还没有检查最新稳定版本中又无此bug;第二,客户的系统已经运行了一段时间,升级到最新版本上可能还会发生更多新问题。

那么,我们就应该在1.0版本上建立一个分支,在这个分支上进行开发,修改bug ,创建bugpatch,客户马上就能解决问题了。

然后我们关起门来,查看最新版本上又无此bug;如果有,就将分支合并到主版本上,解决最新版本的问题。

实际操作如下;

在菜单栏的creat->>creat a branch,在跳出的creat branch setting窗体上,new branch中,填入你给分支取的名字;在module to fork中填入文件名;请记住,你要在rtag options选项卡中,选中rev./tag/branch,填入版本号。如果你这里不填,生成的分支将会以最新版为分叉点。

八、锁定文件

这可是武汉自由软件协会的另一个秘技。

一般而言,在项目小组中,项目经理会定期公布最新的基础版本,要求小组成员都在这个基础版本上进行进一步开发。

在实际工作中,总会有些成员提前完成工作,他们提交更改后,最新版本就会比项目经理发布的基础版本的version更高。

有时候,某些项目成员会有意无意修改基础版本,并且指定提交到基础版本上,如果允许他们提交修改,大家可能都会在一个错误的基础版本工作,后果是不堪设想的。

锁定文件的操作如下:

菜单栏的admin->>comandline,输入这个命令:

cvs admin -l版本号 文件全名

注意,-l和版本号之间没有空格。

如果你锁定成功,会有如下提示:

RCS file: /cvs/hrsystem/test/new.txt,v

1.1.2.3 locked

done

*****CVS exited normally with code 0*****

九、文件浏览。

1、文件标志浏览

2、通过web页面浏览

3、文件对比

十、冲突处理

十一、管理员的工作

1、协调小组,制定代码管理规范

2、及时发布官方版本信息

3、充分利用标记和分支管理开发团队

Tags:

windows实现cvs的架设:cvsnt与wincvs安装和配置

12月 20th, 2007 | No Comments | Posted in 程序开发

本文是写给希望能够马上通过cvs来进行更好的开发管理的小型团队或个人。

我在这里只想说一句:你一但使用了cvs你就会发现你已经离不开它了。

介绍如何在windows操作系统下安装和配置cvs服务器,并且加入了尽量多的图片——主要目的是让更多的人敢于尝试,并且能够领略到cvs那激动人心的强大功能。

好下面让我们话入正题,以下是本文要介绍的主要内容:

1、服务器端cvsnt的安装;
2、cvs代码仓库的创建;
3、配置cvs帐号;
4、客户端wincvs的安装与配置;
5、使用wincvs进行简单操作(包括commit、checkout等)。

第一节 安装cvsnt

我们知道,cvs是使用“客户端/服务器”(Client/Server)模式来工作的,这也是优秀版本控制系统的发展趋势。那么我们首先要有一台cvs服务器(当然这台电脑也可以同时作为客户端来使用)。本节所要介绍的就是如何利用cvsnt架设一台windows操作系统环境下的cvs服务器。cvsnt顾名思义,肯定是用在windows上的,此软件可以从www.cvsnt.org免费下载最新版本。

先将它下载下来,然后双击开始安装:

会出现上面的对话框,这是无关紧要的,所以一路next按下去,直到出现下面的对话框

这里需要选择“Full installation”,然后点击next,后面会出现以下对话框

注意这里是需要将两个复选框都选中的。然后就可以高枕无忧,一路安装下来了

安装完成了,本节也就结束了,怎么样?还是挺简单的吧。

第二节 创建cvs代码仓库(Repository)

在此我就不对cvs仓库的概念和用途做更多解释了,大家可以参考放飞网文档中心中的其他文章中的介绍。大家只要记住,cvs仓库是代码的每个版本和所有相关记录在服务器端的储存地。有些时候又称它为主拷贝(Master Copy),为什么呢,我们将在后面的章节中了解到。

在创建cvs仓库之前,我们首先需要新建一个文件夹用于充当仓库。该文件夹最好不要与程序放在一起,以免万一系统崩溃时破坏数据。然后,点击“开始”->“程序”->“CVS for NT”->“configure server”,出现对话框后选择“Repositories”选项卡,就会出现如下对话框

点击下方的“add”按钮,会出现让你选择文件夹的对话框,选择我们刚才创建的文件夹,并确定,这时会发现上面所示对话框中央的列表框中发生了改变如下所示

显示出了我们上面所创建的文件夹的路径。这样一个cvs仓库就创建好了。

第三节 配置cvs帐号

上面我们已经安装了cvsnt,并创建了一个cvs仓库。这时,我们需要给连接到服务器上的每一个客户端创建帐号,以保证他们可以正常地工作。

最简单的办法是右键单击“我的电脑”,选择“管理”,在“本地用户和组”中右键单击“用户”,选择“新用户”进行帐户的添加。这样是创建了windows的用户,同时也就创建了cvs的帐户。

第四节 Wincvs的安装与配置

上面三节我们已经介绍了服务器端的全部步骤,现在我们已经有一台cvs服务器了,那么为了实现“客户端/服务器”(Client/Server)模式,我们现在还要继续创造一个或多个客户端。

客户端使用的软件是wincvs可以在www.WinCvs.org免费下载,它是图形界面的,比较直观,而且功能强大。wincvs的安装没有什么特别的,和其他软件一样,双击就可以安装了。

安装完成后,最重要的是对客户端进行配置,目的在于让cvs客户端根据配置信息找到服务器上需要访问的仓库。在wincvs窗口菜单栏中选择“Admin”->“Preferences”出现如下对话框:

在“CVSROOT”栏中输入配置字符串,格式如下:

:pserver:username@hostname(或IP地址):CVS仓库路径

这个格式是绝对不能错的,否则cvs命令就不能正常执行。

下面我解释一下上面的字符串的含义:

1、 “pserver” 是最常用的一直cvs远程访问方式;
2、 “username” 是指客户端在服务器上的用户名,也就是我们在上面的“配置cvs帐号”一结中讲到的;
3、 “hostname” 是cvs服务器的主机名,也可以是它的IP地址;
4、 “cvs仓库路径” 是一个cvs仓库所在的目录,用于区分你要访问的是哪个仓库(因为一个cvs服务器上可能有多个不同仓库)。

例如::pserver:njx@frontfree-njx:/master

配置完毕点击确定即可。到现在为止我们已经将cvs的“客户端/服务器”(Client/Server)模式实现了。为了确定一下上面的步骤都对了,我们要进行检验。最好的检验方法是让cvs客户端登录到服务器。在菜单栏里选择“Admin”->“Login”,会出现如下对话框:

提示你输入密码。密码就是上面创建的帐号的密码。完成后点击ok,然后注意wincvs窗口下方的命令结果输出窗口,如果出现下面的信息:

***** CVS exited normally with code 0 *****

说明登录成功了,如果不是,就说明在做上面的步骤时出现了错误,请仔细检查。如果测试成功我们就开始可以使用cvs的强大功能了。

注意:

1、以上步骤同样适用于已经是cvs服务器的那台机器,也就是前面提到的又做服务器又做客户端。
2、cvs的登录只需要一次成功登录就可以了,不必每次都登录。

第五节 wincvs的简单操作

不知不觉已经拥有了cvs服务器的你是否很兴奋呢?下面我们就要开始使用cvs了,本文只介绍cvs的简单操作,如果希望深入了解请参考放飞网文档中心的其他文章。

也许你在兴奋之余会问,第一步应该干什么呢?

首先,我们要在客户端创建一个文件夹,用于存放工作拷贝(关于工作拷贝的概念请参见放飞文档中心的其他相关文档中的相关介绍),工作拷贝是和上面提到的主拷贝相对应的,主拷贝只有一份,放在cvs仓库里,而工作拷贝却可以有很多份,分别放在不同的客户端。创建完文件夹后,我们将它的路径添加到wincvs窗口上方的输入框中即可,从现在开始我们所有的工作拷贝都会存放在这个文件夹中,而我们对文件所做的修改也是针对这个文件夹中的文件。

那么让我们开始一个新的项目,首先在一开始,我们要进行“checkout”过程,这个过程是将主拷贝中的目录及文件拷贝到你指定的客户端目录中。

右键单击wincvs窗口中左边的框,在弹出菜单中选择“checkout module”然后会出现如下对话框:

在第一个输入框中只输入一个“.”,表示仓库中的全要复制一份作为工作拷贝。在第二个输入框中输入你存放工作拷贝的路径,然后点击“确定”即可。(如果今后主拷贝中有了目录的变化,客户端也要进行“checkout”过程才能看到)

完成这一步之后才能进行其他操作,下面我们来模拟建立一个新的项目,并提交到cvs仓库中。首先,在你的工作目录下新建一个文件夹。再看一下wincvs,会看到你刚创建的文件夹前面的图标是红色的,这是提示你选中它然后点击wincvs按钮栏中的那个带加号的按钮,这是在cvs服务器上创建一个这样的目录。同样的如果你新建的是一个文件也是要这样添加。注意目录和文件要分别添加,别以为添加了目录,里面的文件也会被添加。在添加过程中会遇到这样一个对话框:

这是cvs在提醒你输入记录信息,这会被记录在相应的日志中,便于今后查看。一定要认真填写,因为如果几天后你忘了你这天对文件做了什么,这就是最好的资料。如:Create a new project。之后点击确定就可以了。

目录的添加到这步就结束了,而文件的添加还需要另外一步,就是文件的“commit”过程,这也适用于文件被修改后,向仓库提交。只要将需要提交的文件选中,然后右键单击,在弹出菜单里选择“commit selection”然后同样输入记录信息,点击确定。

这时,另外一台客户端机器想看见项目的文件,可以在想获得最新版本的目录上单击右键选择“update selection”,之后就会发现其中的文件变成了最新版本,别人的改动也就一目了然了。

以上我向大家介绍了在windows环境下架设cvs的方法并粗浅的介绍了wincvs的基本功能,希望每个曾经因为没有条件而放弃cvs的开发团队或个人,都能用上自己的cvs。到此,本文也就结束了。谢谢各位能够阅读我的文章。

mysql+php产生乱码原因及解决方法

12月 9th, 2007 | No Comments | Posted in php, 程序开发

mysql+php产生乱码原因:

  1. mysql数据库默认的编码是utf8,如果这种编码与你的PHP网页不一致,可能就会造成MYSQL乱码.
  2. MYSQL中创建表时会让你选择一种编码,如果这种编码与你的网页编码不一致,也可能造成MYSQL乱码.
  3. MYSQL创建表时添加字段是可以选择编码的,如果这种编码与你的网页编码不一致,也可能造成MYSQL乱码.
  4. 用户提交页面的编码与显示数据的页面编码不一致,就肯定会造成PHP页面乱码.
  5. 如用户输入资料的页面是big5码, 显示用户输入的页面却是gb2312,这种100%会造成PHP页面乱码.
  6. PHP页面字符集不正确.
  7. PHP连接MYSQL数据库语句指定的编码不正确.

注意:
很多人都怀疑mysql版本不一致会导致乱码,相信看了本说明你就不会这样认为了.
平时你在某些网站看到的文字可能有几种编码, 如你看到一个繁体字,它有可能是big5编码,也有 可能是utf-8编码的,更有可能是gb码的,没错,也就是说有简体编码的繁体字,也有繁体编码的简体字,一定要了解这一点.
如果你是做一个简体编码的网页,编码定为GB2312,如果有香港和台湾地区的访客提交繁体的信息,就可能会造成乱码,解决方法:

  • 将网站编码设为 utf-8,这样可以兼容世界上所有字符,
  • 如果网站已经运作了好久,已有很多旧数据,不能再更改简体中文的设定,那么建议将页面的编码设为 GBK, GBK与GB2312的区别就在于:GBK能比GB2312显示更多的字符,要显示简体码的繁体字,就只能用GBK.

使用mysql+php产生乱码的原因都了解得很清楚了,那么解决就不困难了.

mysql+php产生乱码的解决办法:

  1. 如果安装mysql的编码已不能更改,很多朋友是购买虚拟主机建立网站,无权更改MYSQL的安装编码,这一关我们可以跳过,因为只要后面的步聚正确,一样能解决乱码问题
  2. 修改数据库编码,如果是数据库编码不正确,可以在phpmyadmin 执行如下命令:

    ALTER DATABASE ‘test’ DEFAULT CHARACTER SET utf8 COLLATE utf8_bin

    以上命令就是将test数据库的编码设为utf8.

  3. 修改表的编码:

    ALTER TABLE ‘category’ DEFAULT CHARACTER SET utf8 COLLATE utf8_bin

    以上命令就是将一个表category的编码改为utf8.

  4. 修改字段的编码:

    ALTER TABLE ‘test’ CHANGE ‘dd’ ‘dd’ VARCHAR( 45 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL

    以上命令就是将test表中 dd的字段编码改为utf8.

  5. 如果是这种情况容易解决,只需检查下页面,修改源文件的charset即可.
  6. 这种情况也是修改页面charset即可.
  7. 在连接数据库的语句中.

mysql_connect(’localhost’,'user’,'password’);
mysql_select_db(’my_db’);
mysql_query(”set names utf8;”); //select 数据库之后加多这一句

为了避免PHP页面乱码的发生,PHP页面开始第一句
header(”content-type:text/html; charset=utf-8″);
//强行指定页面的编码,以避免乱码

注意:
照以上方法修改以后只能保证你新插入的数据不会乱码,举个例:如果你用户已提交的数据是BIG5,你却想通过以上方法改为可以在GB2312的网页正确显示是不可能的, 这种文字内码的变换只能通过另写程序来解决.

Tags: , ,

MagickWand example:操作GIF图片的例子

12月 9th, 2007 | 1988 Comments | Posted in php, 程序开发

MagickWand example:

压缩图片:

<?php

// convert flower.jpg -quality 80% flower_quality.jpg

$resource = NewMagickWand();
MagickReadImage( $resource, ’small_flower.jpg’ );

MagickSetFormat($resource, ‘JPG’);
MagickSetImageCompression($resource, MW_JPEGCompression);
MagickSetImageCompressionQuality($resource, 80.0);

header( ‘Content-Type: image/gif’ );
MagickEchoImageBlob( $resource );

?>
在图片上写文字:
<?php

// convert flower.jpg -font courier -fill white -pointsize 20 -annotate +50+50 Flower flower_annotate1.jpg

$resource = NewMagickWand();
$dwand = NewDrawingWand();
$pwand = NewPixelWand();

PixelSetColor($pwand, “white”);
DrawSetFont($dwand, “/usr/share/fonts/default/TrueType/cour.ttf”);//指定字体
DrawSetFontSize($dwand, 20);
DrawSetFillColor($dwand, $pwand);

DrawSetGravity($dwand, MW_SouthGravity);

MagickReadImage( $resource, ’small_flower.jpg’ );

if( MagickAnnotateImage( $resource, $dwand, 0, 0, 0, “Flower” ) )
{
header( ‘Content-Type: image/gif’ );
MagickEchoImageBlob( $resource );
}
else
{
echo MagickGetExceptionString($resource);
}

?>

Crop an AREA:

<?php

// convert flower.jpg -crop 128×128+50+50 flower_crop.jpg

$resource = NewMagickWand();

MagickReadImage( $resource, ’small_flower.jpg’ );

if( MagickCropImage( $resource, 128, 128, 50, 50 ) )
{
header( ‘Content-Type: image/gif’ );
MagickEchoImageBlob( $resource );
}
else
{
echo MagickGetExceptionString($resource);
}

?>

旋转图片:

<?php

// convert flower.jpg -rotate 45 flower_rotate45.jpg

$resource = NewMagickWand();
MagickReadImage( $resource, ’small_flower.jpg’ );

MagickRotateImage( $resource, null, 45 );

header( ‘Content-Type: image/gif’ );
MagickEchoImageBlob( $resource );

?>

调整大小:

<?php

// convert flower_original.jpg -resize 640×480 flower.jpg

$resource = NewMagickWand();
MagickReadImage( $resource, ’small_flower.jpg’ );

MagickResizeImage( $resource, 100, 100, MW_QuadraticFilter, 1.0 );

header( ‘Content-Type: image/gif’ );
MagickEchoImageBlob( $resource );

?>

Apply Resharp Filter:

<?php

// convert flower.jpg -unsharp 1.5×1.0+1.5+0.02 flower_unsharp.jpg

$resource = NewMagickWand();
MagickReadImage( $resource, ’small_flower.jpg’ );

MagickUnsharpMaskImage( $resource, 1.5, 1.0, 1.5, 0.02 );

header( ‘Content-Type: image/gif’ );
MagickEchoImageBlob( $resource );

?>

Tags: , ,

Magickwand图片处理中写中文乱码的解决方法

12月 9th, 2007 | 1 Comment | Posted in php, 程序开发

php对于中文处理,乱码问题是最底层,最核心的部分,包括mysql乱码部分.

MagickWand 不支持GB2312编码的文字直接写到图片上,必须先把文字转换成utf-8格式,不然就是乱码

这里是一个一段在图片上写中文字的一段代码:

<?
$black = NewPixelWand(’black’); //建立三个颜色的背景图层
$white = NewPixelWand(’white’);

$mgck_wnd=NewMagickWand();
MagickNewImage($mgck_wnd, 100, 100, $black ) ;//建立一个100*100的背景是黑色的图片

$txt_wnd = NewDrawingWand(); //绘画图层
$font_size=”12″; //字体大小
$text=”虾皮QQ:27647737″;
$text_write= mb_convert_encoding($text, “utf-8″, “gb2312″);
//转换编码,如果你的程序是 UTF-8的编码就不需要转换了

DrawSetTextEncoding($txt_wnd,”UTF-8″) ; //文字编码
DrawSetFont($txt_wnd,”C:\WINDOWS\Fonts\SIMLI.TTF”); //字体,如果路径不对,字就无法显示
DrawSetFontWeight($txt_wnd,900 );

DrawSetFillColor($txt_wnd, $white);//字体的颜色

DrawSetFontSize($txt_wnd, 15);//字体大小

DrawSetGravity($txt_wnd, MW_WestGravity);//对齐方式
DrawAnnotation($txt_wnd, 0, 0, $text_write); //写文字

MagickDrawImage($mgck_wnd, $txt_wnd); //把文字写到新建的图片上

MagickSetFormat($mgck_wnd,”gif”);
header(’Content-Type: ‘ . MagickGetMimeType($mgck_wnd));
/* Outputs $mgck_wnd’s image sequence as a BLOB (Binary Large Object) */
MagickEchoImagesBlob($mgck_wnd);
?>

Tags: , ,