首页 > 编程技术 > php

用PHP产生动态的影像图[转自奥索]

发布时间:2016-11-25 17:00

很多人不了解    PHP 可以产生非HTML的资料.这是对产生影像图非常有用的.可以从 database 产生一个简单的广告横图或更简单只产生一个图形按钮 .
我用 TTF 字型在以下的范例中    
我通常取名作 'button.php3':
#######################################################
-----button.php3------
<?
    Header("Content-type: image/gif");
    if(!isset($s)) $s=11;
    $size = imagettfbbox($s,0,"fonts/TIMES.TTF",$text);
    $dx = abs($size[2]-$size[0]);
    $dy = abs($size[5]-$size[3]);
    $xpad=9;
    $ypad=9;
    $im = imagecreate($dx+$xpad,$dy+$ypad);
    $blue = ImageColorAllocate($im, 0x2c,0x6D,0xAF);
    $black = ImageColorAllocate($im, 0,0,0);
    $white = ImageColorAllocate($im, 255,255,255);
    ImageRectangle($im,0,0,$dx+$xpad-1,$dy+$ypad-1,$black);
    ImageRectangle($im,0,0,$dx+$xpad,$dy+$ypad,$white);
    ImageTTFText($im, $s, 0, (int)($xpad/2)+1, $dy+(int)($ypad/2), $black, "fonts/TIMES.TTF", $text);
    ImageTTFText($im, $s, 0, (int)($xpad/2), $dy+(int)($ypad/2)-1, $white, "fonts/TIMES.TTF", $text);
    ImageGif($im);
    ImageDestroy($im);
?>
#######################################################
很重要一点是你不能在这档案中放任何HTML tags.也不能有空白行在 <?和 ?> tag 之前或之後. 如果你用这段Script後看到一个不完整的影像, 表示你可能在PHP标签以外误打了字元.
以上的 script 可以由此语法在网页中叫出来: <IMG SRC="button.php3?s=36&text=PHP+is+Cool">    
#######################################################
客户端上载的页面:
--------------------       upload.htm        ---------------------
<form enctype="multipart/form-data"
method="post" action="upload.php">
<input type="hidden" name="MAX_FILE_SIZE" value="10240000000">请选择或输入上传文件名:<input name="upfile" type="file">
<input type="submit" value="开始上传">
---------------------    upload.php        -------------------
<?
if(empty($upfile)){
print("No file was transfered! 无文件上传!");
    exit;
}
$image_path=$upfile;
@$image_info=getimagesize($image_path);
if($image_info[2]==2)
{@$image2=imagecreatefromjpeg($image_path);
}
else if($image_info[2]==1){
@$image2=imagecreatefromgif($image_path);
}
else{print("不接受的图片!");exit;}
if(empty($image2)){print("系统错误,请重试");exit;}
$image2_x=imagesx($image2);
$image2_y=imagesy($image2);
if($image2_x==$image2_y){
$x=150;
$y=0;
}
else if($image2_x>$image2_y){
$x=150;
$y=intval(150*$image2_y/$image2_x);
}
else{
$y=150;
$x=intval(150*$image2_x/$image2_y);
}
$image1=imagecreate($x,$y);
imagecopyresized($image1,$image2,0,0,0,0,$x,$y,$image2_x,$image2_y);
imagegif($image1,"new.gif");
?>
-------------------------     说明    ----------------------
本代码特点在于将所有难看的warning转换为可以自已设计输出的出错提示,@作用在于抑制出借信息。此代码默认的是将图片转换为长宽不超过150像素的缩略图,并保存为new.gif    。使用时可以随意修改。
本代码由turtlevan( turtlevan@263.net )制作,您可以任意使用与修改,也可在网络上任意传播,但不得剽窃为已有。
(王锋)
一、原理
PHP中的GD库支持中文,但是必须要以UTF-8格式的参数来进行传递。下面先说一下汉字的UTF-8编码的求得。用WORD2000或WINDOW 2000下的记事本编辑所要显示的汉字。
 把所编辑的文字存成格式为UTF-8格式的文件。
 用一个16进制的编辑器(如用PCTOOLS的EDIT功能)打开这个文件,这时会看到打开的文件里面有一些16进制的字符。一个汉字占三个字节,所以应该选择编辑汉字个数乘以3个字节的内容,把此编码记录下来以备后用。如赛迪网的代码是:E8 B5 9B E8 BF AA E7 BD 91
二、实现
本例中实现:赛迪网 www.ccidnet.com 的图像输出。文件名为:ttf.php。<?php
//定义输出为图像类型
header("content-type:image/gif");
//新建图象
$pic=imagecreate(240,30);
//定义黑白颜色
$black=imagecolorallocate($pic,0,0,0);
$white=imagecolorallocate($pic,255,255,255);
//定义字体
$font="c://WIN2000//fonts//simhei.ttf";
//定义输出字体串
$str = chr(0xE8).chr(0xB5).chr(0x9B).chr(0xE8).chr(0xBF).chr(0xAA).chr(0xE7).chr(0xBD).chr(0x91)." www.ccidnet.com";
//写 TTF 文字到图中
imagettftext($pic,20,0,10,20,$white,$font,$str);
//建立 GIF 图型
imagegif($pic);
//结束图形,释放内存空间
imagedestroy($pic);
?>
标签:[!--infotagslink--]

您可能感兴趣的文章: