Archives for the ‘webdesign’ Category

php 图片加水印代码

Saturday, January 12th, 2008
以下为引用内容:

+————————————————————————–

| 生成加水印的图片类 (支持水印为图片或者文字)

| ============================

| by JackMing (感谢Dash和其他不知道姓名的朋友支持,本类在这些朋友作品的基础上创建)

+————————————————————————–

*/

Class Gimage{

var $src_image_name = “”; //输入图片的文件名(必须包含路径名)

var $jpeg_quality = 90; //jpeg图片质量

var $save_image_file = ”; //输出文件名

var $wm_image_name = “”; //水印图片的文件名(必须包含路径名)

var $wm_image_pos = 1; //水印图片放置的位置

// 0 = middle

// 1 = top left

// 2 = top right

// 3 = bottom right

// 4 = bottom left

// 5 = top middle

// 6 = middle right

// 7 = bottom middle

// 8 = middle left

//other = 3

var $wm_image_transition = 20; //水印图片与原图片的融合度 (1=100)

var $wm_text = “”; //水印文字(支持中英文以及带有rn的跨行文字)

var $wm_text_size = 20; //水印文字大小

var $wm_text_angle = 4; //水印文字角度,这个值尽量不要更改

var $wm_text_pos = 3; //水印文字放置位置

var $wm_text_font = “”; //水印文字的字体

var $wm_text_color = “#cccccc”; //水印字体的颜色值

function create($filename=”")

{

if ($filename) $this->src_image_name = strtolower(trim($filename));

$src_image_type = $this->get_type($this->src_image_name);

$src_image = $this->createImage($src_image_type,$this->src_image_name);

if (!$src_image) return;

$src_image_w=ImageSX($src_image);

$src_image_h=ImageSY($src_image);

if ($this->wm_image_name){

$this->wm_image_name = strtolower(trim($this->wm_image_name));

$wm_image_type = $this->get_type($this->wm_image_name);

$wm_image = $this->createImage($wm_image_type,$this->wm_image_name);

$wm_image_w=ImageSX($wm_image);

$wm_image_h=ImageSY($wm_image);

$temp_wm_image = $this->getPos($src_image_w,$src_image_h,$this->wm_image_pos,$wm_image);

$wm_image_x = $temp_wm_image["dest_x"];

$wm_image_y = $temp_wm_image["dest_y"];

imageCopyMerge($src_image, $wm_image,$wm_image_x,$wm_image_y,0,0,$wm_image_w,$wm_image_h,$this->wm_image_transition);

}

if ($this->wm_text){

$this->wm_text = $this->gb2utf8($this->wm_text);

$temp_wm_text = $this->getPos($src_image_w,$src_image_h,$this->wm_text_pos);

$wm_text_x = $temp_wm_text["dest_x"];

$wm_text_y = $temp_wm_text["dest_y"];

if(preg_match(“/([a-f0-9][a-f0-9])([a-f0-9][a-f0-9])([a-f0-9][a-f0-9])/i”, $this->wm_text_color, $color))

{

$red = hexdec($color[1]);

$green = hexdec($color[2]);

$blue = hexdec($color[3]);

$wm_text_color = imagecolorallocate($src_image, $red,$green,$blue);

}else{

$wm_text_color = imagecolorallocate($src_image, 255,255,255);

}

imagettftext($src_image, $this->wm_text_size, $this->wm_angle, $wm_text_x, $wm_text_y, $wm_text_color,$this->wm_text_font, $this->wm_text);

}

if ($this->save_file)

{

switch ($this->output_type){

case ‘gif’:$src_img=ImagePNG($src_image, $this->save_file); break;

case ‘jpeg’:$src_img=ImageJPEG($src_image, $this->save_file, $this->jpeg_quality); break;

case ‘png’:$src_img=ImagePNG($src_image, $this->save_file); break;

default:$src_img=ImageJPEG($src_image, $this->save_file, $this->jpeg_quality); break;

}

}

else

{

if ($src_image_type = “jpg”) $src_image_type=”jpeg”;

header(“Content-type: image/{$src_image_type}”);

switch ($src_image_type){

case ‘gif’:$src_img=ImagePNG($src_image); break;

case ‘jpg’:$src_img=ImageJPEG($src_image, “”, $this->jpeg_quality);break;

case ‘png’:$src_img=ImagePNG($src_image);break;

default:$src_img=ImageJPEG($src_image, “”, $this->jpeg_quality);break;

}

}

imagedestroy($src_image);

}

/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

/*

createImage 根据文件名和类型创建图片

内部函数

$type: 图片的类型,包括gif,jpg,png

$img_name: 图片文件名,包括路径名,例如 ” ./mouse.jpg”

*/

function createImage($type,$img_name){

if (!$type){

$type = $this->get_type($img_name);

}

switch ($type){

case ‘gif’:

if (function_exists(‘imagecreatefromgif’))

$tmp_img=@ImageCreateFromGIF($img_name);

break;

case ‘jpg’:

$tmp_img=ImageCreateFromJPEG($img_name);

break;

case ‘png’:

$tmp_img=ImageCreateFromPNG($img_name);

break;

default:

$tmp_img=ImageCreateFromString($img_name);

break;

}

return $tmp_img;

}

/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

getPos 根据源图像的长、宽,位置代码,水印图片id来生成把水印放置到源图像中的位置

内部函数

$sourcefile_width: 源图像的宽

$sourcefile_height: 原图像的高

$pos: 位置代码

// 0 = middle

// 1 = top left

// 2 = top right

// 3 = bottom right

// 4 = bottom left

// 5 = top middle

// 6 = middle right

// 7 = bottom middle

// 8 = middle left

$wm_image: 水印图片ID

*/

function getPos($sourcefile_width,$sourcefile_height,$pos,$wm_image=”"){

if ($wm_image){

$insertfile_width = ImageSx($wm_image);

$insertfile_height = ImageSy($wm_image);

}else {

$lineCount = explode(“rn”,$this->wm_text);

$fontSize = imagettfbbox($this->wm_text_size,$this->wm_text_angle,$this->wm_text_font,$this->wm_text);

$insertfile_width = $fontSize[2] – $fontSize[0];

$insertfile_height = count($lineCount)*($fontSize[1] – $fontSize[3]);

}

switch ($pos){

case 0:

$dest_x = ( $sourcefile_width / 2 ) – ( $insertfile_width / 2 );

$dest_y = ( $sourcefile_height / 2 ) – ( $insertfile_height / 2 );

break;

case 1:

$dest_x = 0;

if ($this->wm_text){

$dest_y = $insertfile_height;

}else{

$dest_y = 0;

}

break;

case 2:

$dest_x = $sourcefile_width – $insertfile_width;

if ($this->wm_text){

$dest_y = $insertfile_height;

}else{

$dest_y = 0;

}

break;

case 3:

$dest_x = $sourcefile_width – $insertfile_width;

$dest_y = $sourcefile_height – $insertfile_height;

break;

case 4:

$dest_x = 0;

$dest_y = $sourcefile_height – $insertfile_height;

break;

case 5:

$dest_x = ( ( $sourcefile_width – $insertfile_width ) / 2 );

if ($this->wm_text){

$dest_y = $insertfile_height;

}else{

$dest_y = 0;

}

break;

case 6:

$dest_x = $sourcefile_width – $insertfile_width;

$dest_y = ( $sourcefile_height / 2 ) – ( $insertfile_height / 2 );

break;

case 7:

$dest_x = ( ( $sourcefile_width – $insertfile_width ) / 2 );

$dest_y = $sourcefile_height – $insertfile_height;

break;

case 8:

$dest_x = 0;

$dest_y = ( $sourcefile_height / 2 ) – ( $insertfile_height / 2 );

break;

default:

$dest_x = $sourcefile_width – $insertfile_width;

$dest_y = $sourcefile_height – $insertfile_height;

break;

}

return array(“dest_x”=>$dest_x,”dest_y”=>$dest_y);

}

/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

gb2utf8 指定的文字转换为UTF-8格式,包括中英文混合

内部函数

*/

function gb2utf8($gb)

{

if(!trim($gb))

return $gb;

$filename=”./gb2312.txt”;

$tmp=file($filename);

$codetable=array();

while(list($key,$value)=each($tmp))

$codetable[hexdec(substr($value,0,6))]=substr($value,7,6);

$utf8=”";

while($gb)

{

if (ord(substr($gb,0,1))>127)

{

$tthis=substr($gb,0,2);

$gb=substr($gb,2,strlen($gb)-2);

$utf8.=$this->u2utf8(hexdec($codetable[hexdec(bin2hex($tthis))-0x8080]));

}

else

{

$tthis=substr($gb,0,1);

$gb=substr($gb,1,strlen($gb)-1);

$utf8.=$this->u2utf8($tthis);

}

}

return $utf8;

}

function u2utf8($c)

{

$str=”";

if ($c < 0x80)

{

$str.=$c;

}

else if ($c < 0x800)

{

$str.=chr(0xC0 | $c>>6);

$str.=chr(0×80 | $c & 0×3F);

}

else if ($c < 0x10000)

{

$str.=chr(0xE0 | $c>>12);

$str.=chr(0×80 | $c>>6 & 0×3F);

$str.=chr(0×80 | $c & 0×3F);

}

else if ($c < 0x200000)

{

$str.=chr(0xF0 | $c>>18);

$str.=chr(0×80 | $c>>12 & 0×3F);

$str.=chr(0×80 | $c>>6 & 0×3F);

$str.=chr(0×80 | $c & 0×3F);

}

return $str;

}

/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

get_type 获得图片的格式,包括jpg,png,gif

内部函数

$img_name: 图片文件名,可以包括路径名

*/

function get_type($img_name)//获取图像文件类型

{

$name_array = explode(“.”,$img_name);

if (preg_match(“/.(jpg|jpeg|gif|png)$/”, $img_name, $matches))

{

$type = strtolower($matches[1]);

}

else

{

$type = “string”;

}

return $type;

}

}

?>

使用方法:

$img = new Gimage();

$img->wm_text = “www.discuz.com”;

$img->wm_text_font = “./STXINWEI.TTF”;

$img->create(“./mouse.jpg”);

就可以了,其中

mouse.jpg是你要在其上添加水印的图片名称,注意包含路径名

STXINWEI.TTF是字体文件的路径名+文件名

这就是一个简单的测试。如果要调整更复杂的显示效果,只要修改一下类中的属性就可以了,例如把字体放大就可以

$img->wm_text_size = 20;

增加水印图片就可以

$img->wm_image_name=”文件名”;


via PHP给图片增加水印得类

php 函数的 url rewrite

Saturday, January 12th, 2008

代码备份,回头参考

以下为引用内容:

我的博客使用的是虚拟主机,也想实现url优化,但是我没有服务器权限,怎么办?很简单,我们可以从$_SERVER[”REQUEST_URI”]和$_SERVER['PATH_INFO']来下手

原网站访问地址是 http://www.phpweblog.net/test.php?a=1&b=2&c=3

使用了 mode_rewrite 函数后,就可以用 http://www.phpweblog.net/test.php/a/1/b/2/c/3 来访问了,而且程序基本不用修改.


显示更多

via php函数实现虚拟主机url优化

php 记录搜索引擎蜘蛛的代码

Saturday, January 12th, 2008

数据库及表

显示更多

显示更多

关于 php 数据采集

Thursday, December 20th, 2007

//首先将别人的网页取回,如:

$str = file_get_contents("http://club.21php.com/showthread.php?t=10000");

//再用正则表达式提取其中有用的部分

preg_match("|(.+)|isU”,$str,$text);

//最后入库或生成自己的静态页面:

file_put_contents (“text1.htm”,$text[1]);

?>

4.2不能用这个函数,你可以用FILE函数取代:

$str=implode(“”,file(“http://club.21php.com/showthread.php?t=10000″));

set_time_limit(0);

$max_time=3600;

$cache_file='cache_yahoo.txt';

$nowtime=time();

if(!file_exists($cache_file)){

$filetime=0;

}else{

$filetime=filemtime($cache_file);

}

if($filetime+$max_time<$nowtime){

//更新

ob_start();

function get_yahoo_info($url){

$content=file_get_contents($url);

$pattern='|
(.*) ((.*)) (.*) |U’;

preg_match_all($pattern,$content,$out);

$info['company_name']=$out[1][0];

$info['company_stock']=$out[2][0];

$pattern=’|< td class="yfnc_tablehead1" width="52%">最近交易价: (.*)

|U’;

preg_match_all($pattern,$content,$out);

$info['stock_price']=$out[1][0];

$pattern=’| 涨跌: (.*)

|U’;

preg_match_all($pattern,$content,$out);

$info['stock_upordown']=$out[1][0];

$pattern=’| 市值: (.*)

|U’;

preg_match_all($pattern,$content,$out);

$info['stock_value']=$out[1][0];

return $info;

}

$urls=explode(‘,’,file_get_contents(‘url.txt’));

$i=0;

$matchs=array();

foreach($urls as $url){

$rs=get_yahoo_info($url);

if(!empty($rs)){

$matchs[$i]=$rs;

$i++;

$rs=”;

}

}

//print_r(get_yahoo_info(‘http://cn.finance.yahoo.com/q?s=000063.SZ’));

?>

$i=1;

foreach($matchs as $match){

?>

$i++;

}?>

公司名称
股票代号
股票价格
股票涨幅
市值

$content=ob_get_clean();

$fp=fopen($cache_file,'w');

if(!$fp)echo '打开文件失败';

if (flock($fp, LOCK_EX)) { // 进行排它型锁定

if(!fwrite($fp, $content))echo '文件写入失败';

flock($fp, LOCK_UN); // 释放锁定

} else {

//echo "Couldn't lock the file !";

if(!fwrite($fp, $content))echo '文件写入失败';

}

fclose($fp);

//echo 'cache time:'.time();

echo $content;

}else{

//echo 'cache!';

echo file_get_contents($cache_file);

}

?>

http://www.php.net/manual/zh/function.file-get-contents.php

php探针

php cms 管理系统

http://zhidao.baidu.com/question/33957550.html

cheatsheet 大全

Wednesday, November 28th, 2007

来自 http://www.ilovejackdaniels.com/cheat-sheets/,我下载转到 这里 一部分,包括 html,javascript,asp(vbscript),ruby,php,mysql,正则,microformats,mod_rewrite等

jQuery 解析 xml 代码

Tuesday, November 20th, 2007


点击这里打开新窗口浏览此网页

curl 拿到 rss,jQuery 解析。

显示更多

另一个xml 解析例子

显示更多