喜悦国际村 
» 游客:  注册 | 登录 | 搜索 | 统计 | 帮助

RSS 订阅当前论坛  

喜悦证交所已经关闭

上一主题 下一主题
     
标题: 一个将文字写入图片的程序,值得一顶,前些天那位发贴求的朋友,你还在吗?  
 
纯粹误会
金牌会员
Rank: 6Rank: 6


UID 63836
精华 0
积分 2194
帖子 2187
金钱 2194 喜悦币
威望 0
人脉 0
阅读权限 70
注册 2005-3-30
状态 离线
一个将文字写入图片的程序,值得一顶,前些天那位发贴求的朋友,你还在吗?



<?
/*#++++++++++++++++++++++++++++++++++++++++++++
程序作者:[url]http://zh5j.com[/url] (纯粹误会)
本页功能:写文字到图片中
#+++++++++++++++++++++++++++++++++++++++++++++*/
$string="www.zh5j.com";#文字
$source="music.gif";#原始图片
$destination="121 2005.jpg";#生成图片
$fontUrl="image/swissk.ttf";#字库文件地址。
#从C:/windows/fonts目录中拖拽一个字库文件到当前(image)目录中(可以使用资源管理器)

#+++++++++++++++++++++++++++++++++++++++++++++
#函数调用
Str2Pic($string,$source,$destination,$fontUrl,8,"#FFFFFF","#808080",10,10);
#Str2Pic("www.zh5j.com","music.gif","music.jpg","image/swissk.ttf",10,"FFFFFF","330099",10,10);

#+++++++++++++++++++++++++++++++++++++++++++++
function Str2Pic($string,$source,$destination="",$fontUrl="font.ttf",$fontSize=10,$shadowColor="#FFFFFF",$fontColor="#808080",$x=10,$y=10){
/*+++++++++++++++++++将一行字串写入图片中
支持三种图片扩展名:jpeg、jpg、gif、png
参数说明
$string :写入的文字。如果字库不支持中文,请勿使用中文
$source :读取的原始图片地址。不支持远程图片
$destination :生成的目标图片地址。为空不生成。可以与原始图片地址相同
$fontUrl :字库文件地址。从C:/windows/fonts目录中拖拽一个字库文件到当前目录中
$fontSize :文字字体大小
$shadowColor :文字阴影颜色。16进制
$fontColor :文字字体颜色。16进制
$x :文字x坐标位置(左起位置)
$y :文字y坐标位置(上起位置)
++++++++++++++++++++++++++++++*/
    
header('Content-type: image/png');

    
$pi=pathinfo($source);
    
$pie=$pi[extension];#获取扩展名

    
if(eregi("jpg|jpeg",$pie))$im=@imagecreatefromjpeg($source);
    if(
eregi("gif",$pie))$im=@imagecreatefromgif($source);
    if(
eregi("png",$pie))$im=@imagecreatefrompng($source);

    
$col1=hex2dec($shadowColor);#阴影颜色
    
$col2=hex2dec($fontColor);#字体颜色

    
$col1=imagecolorallocate($im,$col1[0],$col1[1],$col1[2]);
    
$col2=imagecolorallocate($im,$col2[0],$col2[1],$col2[2]);
    
imagettftext($im,$fontSize,0,$y+1,$x+1,$col1,$fontUrl,$string);
    
imagettftext($im,$fontSize,0,$y,$x,$col2,$fontUrl,$string);
    
imagejpeg($im);
    if(
$destination)imagejpeg($im,$destination);
    
imagedestroy($im);
}


function 
hex2dec($HexColror){#十六进制颜色转换成10进制颜色
    
preg_match_all("/([0-f]){2,2}/i",$HexColror,$matches);
    if(
count($matches[0])==3){
    
$rr=hexdec($matches[0][0]);
    
$gg=hexdec($matches[0][1]);
    
$bb=hexdec($matches[0][2]);
    }
    return array(
$rr,$gg,$bb);
}
?>




求职深圳。
2005-5-24 10:32 AM#1
查看资料  发短消息  QQ . .   顶部
 
darkink (darkink)
注册会员
Rank: 2
一般会员



UID 63974
精华 0
积分 63
帖子 63
金钱 63 喜悦币
威望 0
人脉 0
阅读权限 20
注册 2005-4-4
状态 离线
[推荐阅读] 请问这种字体的名字,在哪有下载
你的preg_match_all,那个涵数用法给讲解下,我对REGULAR EXPRESSION很烂
2005-5-24 12:55 PM#2
查看资料  发短消息  顶部
 
纯粹误会
金牌会员
Rank: 6Rank: 6


UID 63836
精华 0
积分 2194
帖子 2187
金钱 2194 喜悦币
威望 0
人脉 0
阅读权限 70
注册 2005-3-30
状态 离线
[推荐阅读] 新手求助:关于css样式的修改在主页中显示不出来的问题
preg_match_all("/([0-f]){2,2}/i",$HexColror,$matches);

preg_match_all全文匹配,即找出全文中所有符合要求的串
而 preg_match找到一个即返回

定界符有//、!!、__等,preg开头的正则改须加上其中任意一对定界符
ereg类没有,加了就错了
i为不区分大写,其他还e什么的,具体意思请查阅手册
[0-f]好像不太对
应该是[0-9a-7],零到九A到F,即符合0123456789abcefABCDEF这此些字符的
{2,2}表示至少匹配2个(前面的2),最多匹配2个(后面的2)
你可以用{2,}表示两个以上包括2个

本表达式的功能找出一个字串中合法的颜色代码,
如#Ff00Aa
#号不管
$rr="FF";
$gg="00";
$bb="Aa";

具体的语法规则请到我的论坛的帮助中找到正则表达式
下载HTML页到你的机子,

建议可以PHP手册中一此精典的例子

1。判断信箱$ifMail=(!eregi("^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,4}$",$txt));

2。如本人写的找出页面中所有的链接和信箱,给其加超链接

--------------------------这好复杂的,我现在都不想看他了,你要能看懂,帮主

$Text=preg_replace("!([^\]=\"'|;]|^|<br>)([url]http://[/url]([a-z0-9-_.~]+){1,}[^\s<\"';]+)!is","\\1<a href=\"\\2\" target=_blank>$IEIm{$ie}\\2</a> ",$Text);#提取链接
$Text=preg_replace("_([^\]=\"';]|<br>)(^|\s|<br>|[^\w\]=])([\_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,4})_is","\\1\\2<a href=\"mailto:\\3\">$EMailIm{$mail}\\3</a> ",$Text);#提取邮件




求职深圳。
2005-5-25 02:53 AM#3
查看资料  发短消息  QQ . .   顶部
 
darkink (darkink)
注册会员
Rank: 2
一般会员



UID 63974
精华 0
积分 63
帖子 63
金钱 63 喜悦币
威望 0
人脉 0
阅读权限 20
注册 2005-4-4
状态 离线
[推荐阅读] 高手们介绍几本好书给我们这些菜鸟好吗?
帅哥,你这也太强了吧,还有这类教程吗
2005-5-25 09:59 AM#4
查看资料  发短消息  顶部
 
mingliang (mingliang)
新手上路
Rank: 1
一般会员



UID 23264
精华 0
积分 44
帖子 44
金钱 44 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2003-9-17
来自 辽宁大连
状态 离线
[推荐阅读] 十年磨一剑:MySQL即将释出新版本,增加企业级特性,支持存储过程、触发器和视图
1。判断信箱$ifMail=(!eregi("^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,4}$",$txt));
对这个中的_还是不太明白,能再讲讲吗?它在这条语句中主要起到什么作用?
2005-5-25 10:04 AM#5
查看资料  发短消息  顶部
     


  可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题 | 开通个人空间  


 




Powered by Discuz! 6.1.0  © 2001-2010 Comsenz Inc.
Processed in 0.027431 second(s), 6 queries

(冀ICP备05009913号) 管理员:sadly 邮箱/MSN: sadly@phpx.com QQ:824008(长隐) 清除 Cookies - - Archiver - WAP