因为最近做一个DIY的设计器,需要让用户选择某个字体,并且支持旋转,拖拉等操作。直接使用文本框是不行的,因为flex不支持字体的直接旋转,大家可以尝试一下,如果选择了text控件,文字就看不到了,有个办法是把文字embed嵌入到swf中去,这样就支持了。
但是英文还好,字体文件不大,中文的话动辄几个M,这个做法很不现实,于是想到另外一个解决方案,用服务器字体。
做了个php demo,接收文字,并根据指定的字体文件去生成图片:
<?php
$str = $_GET['str'];
$fontpath= $_GET['fontpath'];
if($str==null||$str==''){
return;
}else{
$str = iconv("GB2312", "UTF-8", $str);//为了支持中文
}
$Size = 72;
if($fontpath==null||$fontpath==''){//字体的路径
$fontpath='fzse_gbk.ttf';//可使用ttf字体
}
//动态计算文字占用图片大小
$txts = imagettfbbox($Size,0,$fontpath,$str);
$YX1 = abs($txts[5])*0.23;
$YX2 = abs($txts[2])*0.02;
$IX = abs($txts[2])+$YX2;
$IY = abs($txts[5])+$YX1;
$im = imagecreate($IX,$IY);
$white = imagecolorallocate($im,0xFF,0xFF,0xFF);
imagecolortransparent($im,$white);
......
因为最近做一个DIY的设计器,需要让用户选择某个字体,并且支持旋转,拖拉等操作。直接使用文本框是不行的,因为flex不支持字体的直接旋转,大家可以尝试一下,如果选择了text控件,文字就看不到了,有个办法是把文字embed嵌入到swf中去,这样就支持了。
但是英文还好,字体文件不大,中文的话动辄几个M,这个做法很不现实,于是想到另外一个解决方案,用服务器字体。
做了个php demo,接收文字,并根据指定的字体文件去生成图片:
<?php
$str = $_GET['str'];
$fontpath= $_GET['fontpath'];
if($str==null||$str==''){
return;
}else{
$str = iconv("GB2312", "UTF-8", $str);//为了支持中文
}
$Size = 72;
if($fontpath==null||$fontpath==''){//字体的路径
$fontpath='fzse_gbk.ttf';//可使用ttf字体
}
//动态计算文字占用图片大小
$txts = imagettfbbox($Size,0,$fontpath,$str);
$YX1 = abs($txts[5])*0.23;
$YX2 = abs($txts[2])*0.02;
$IX = abs($txts[2])+$YX2;
$IY = abs($txts[5])+$YX1;
$im = imagecreate($IX,$IY);
$white = imagecolorallocate($im,0xFF,0xFF,0xFF);
imagecolortransparent($im,$white);
......
最近一年来一直在使用fedora,发现linux真是太适合我了,喜欢写程序,自己瞎倒腾,唉windows误我大好年华……
用PHP写了一段程序用于提取网页中的数据,相信搜索引擎也是差不多的想法,只不过他们数据多,算法好些,呵呵
[php]
<?php
/*
*此文件的目标是自动搜集存储8684上的深圳市公交数据
*
*由于http获得的网页为gbk编码PHP需要转换,只能将PHP重新编译
*/
//载入simple_html_dom类分析HTML文件
include 'simple_html_dom.php';
//创建一个SQLite数据库用于存储数据
$db = new SQLite3 ('BusData.db');
if ($db) //数据库创建成功
{
//创建站点名表
$db->exec('CREATE TABLE stationName (id INTEGER PRIMARY KEY AUTOINCREMENT,sName STRING)');
//创建线路表sName,sNote,sTo,sfrom分别存储线路名,备注,去程,回程
$db->exec('CREATE TABLE Line (sName STRING, sNote STRING, sTo STRING, sfrom STRING)');
}
analysis($db, 'http://shenzhen.8684.cn/x_24f5dad9');
$db->close ();
echo "Congratulations! Write Sucessfully!";
//******************
//分析数据,插入数据部分
//***** ......
PHP是一个很优秀的工具,它可以简单,也可以复杂。不一样的项目,应该用不一样的PHP。
小项目 - 简单而直接的PHP
一般对于一个功能页面在20以下的网站,我们可以用一个很简单的框架结构来写。在这个规模上,我建议是使用比较直接的面向过程编码方法,原因很简单,没有必要把class文件弄的N 多,结果controller里边就一个new就完了。当然,需求频繁变化的项目除外。
在这个级别上,php优点表现的很明显:快速开发,一目了然。缺点同时也被隐藏得很好。
中型项目 - 结构优美的OO化的PHP
对于一个中型项目,我建议使用一个良好设计的框架来做,这个框架可以是基于MVC模型,封装了众多底层操作的,当然,一定要有一个好的最好是透明的cache机制,这样,我们为了适应变化而加入的OO机制可以运行得更快更好。
在这个级别上。php的缺点开始凸现,像对OO支持的不完整(这个PHP5有很大改进),只能单线程模式。另外一些外围工具开始出现缺乏支持,像PHP没有好的重构工具,没有好的集成到IDE中的单元测试工具。优点当然还是原来的快速开发,广泛的可用的开源资源。
大型项目 - 扩展、优化后的PHP
这里的 ......
<?php
header("content-type:image/png");
$img=ImageCreate(100,35);
$bgcolor=ImageColorAllocate($img,0,0,0);
$red=ImageColorAllocate($img,255,0,0);
$bgcolortrans=ImageColorTransparent($img,$bgcolor);
ImageString($img,5,10,10,"PNG PHP",$red);
ImagePng($img);
ImageDestroy($img);
?>
ImageCreate()函数可创建图像。被创建的图像有两个参数:图像的宽度、图像的高度。ImageCreate(100,80)一句将创建一个宽100个象素、高80个象素的图像,图像格式可为PNG、JPEG和GIF。
用ImageCreate()函数创建图像实际上是将TrueType字体文字(TEXT)变成图形格式,所以,我们要往图像变量写入文字,所用函数为ImageString,该函数的用法举例如下:
ImageString(,3,10,10,,);
解释:
- 图像对象;
数值 - 分别为:3,文字部分的大小,取HTML标准的字体大小。两个10分别为文字的在图像中的X和Y值;
- 将变为图像内容的字符串;
- 预设的颜色变量。
我们知道,只有PNG和GIF可为背景透明的,故而我们将在header中指定图片格式,语句如下:header("content- type:image/png(或gif)")。而要令图像背景透明,我们 ......
php邮件读取:
程序开发的思路:mail文件:先连接到pop3,读取用户的邮件列表,判断邮件是否读取过,如果没读取过就把邮件加到中转的数据库中。get_mail()函数,读取数据库中的邮件列表,读完后对数据库进行清除。以便能一直读取的都是新的邮件。
代码程序:mail文件:
header("content-type:text/html; charset=utf-8");
include 'config.php';
include 'Pop3.php';
include 'mail_config.php';
$conn=mysql_connect($db_host,$db_user,$db_pass);
mysql_query("set names utf8");
mysql_select_db("$mail_data",$conn);
$pop3=new Net_POP3();
if ($pop3->connect($host,110)=="true"){
$bool=$pop3->login($user,$password);
if ($bool=="ture"){
$list=$pop3->_cmdList();
$sum=$pop3->_cmdStat();
echo "<br>";
for ($j=0;$j<$sum[0];$j++){
$head=$pop3->getParsedHeaders($list[$j]['msg_id']);
preg_match("/([a-z0-9A-Z\s]+):([0-9]+):([0-9]+)/",$head['Date'],$rt);
echo "<br>";
&nbs ......
<?php
header("content-type:text/html; charset=UTF-8");
/*
* record kid words and insert into database
* user by sending email to publication kid words
*
*/
include 'POP3.php';
include 'email_class.php';
include 'Mail_mimeDecode.php';
//include 'include/compatible.php';
include 'include/extend_common.php';
//include '../../htdocs/include/extend_common.php';
define('POST_from_EMAIL', 1);
define('DATABASE_CONNECTION_ERROR', 2);//数据库连接失败错误
define('EMAIL_CONNECTION_ERROR', 3);//邮箱连接失败错误
define('ACCOUNT_ERROR', 4);//邮箱的账号错误
define('SIGN_EMAIL_ERROR', 5);//邮件标记删除错误
define('DELELET_ERROR', 6);//删除邮件错误
define('INSERT_ERROR', 7);//插入数据失败错误
class mail_data {
function mail_data(){
include 'config.php';
$mail_log=fopen("mail_log.txt","a+");
&nbs ......