PHP动态图像的创建

 更新时间:2016年11月25日 16:15  点击:2227
只要安装一些第三方的库文件并具有一定的几何知识,就可以利用PHP来创建和处理图像了。利用PHP创建动态图像是相当容易的一件事情。下面,笔者将详细介绍如何实现。
 
在使用基本的图像创建函数之前,需要安装GD库文件。如果要使用与JPEG有关的图像创建函数,还需要安装jpeg-6b,如果要在图像中使用Type 1型字体,则必须安装t1lib。
 
在建立图像创建环境之前,还需要做一些准备工作。首先,安装t1lib接着安装jpeg-6b,然后再安装GD库文件。在安装时一定要按这里给定的顺序进行安装,因为在编译GD入库时会用到jpeg-6b,如果没有安装jpeg-6b,在编译时就会出错。
 
在安装完这三个组件后,还需要重新配置一次PHP,这也是你对采用DSO方式安装PHP感到庆幸的地方之一。运行make clean,然后在当前的配置中添加下面的内容:
--with-gd=[/path/to/gd]
--with-jpeg-dir=[/path/to/jpeg-6b]
--with-t1lib=[/path/to/t1lib]
完成添加后执行make命令,然后再执行make install命令,重新启动Apache后运行phpinfo()来检查一下新的设置是否生效了。现在,我们就可以开始图像创建工作了。
 
根据所安装的GD库文件的版本将决定你是否能创建GIF或PNG格式的图形文件。如果安装的是gd-1.6或以前的版本,可以使用GIF格式的文件但不能创建PNG格式,如果安装的是gd-1.6以后的版本,可以创建PNG文件但不能创建GIF格式的文件。
 
创建一幅简单的图像也需要用到许多的函数,我们将一步一步地进行说明。
 
在下面的例子中,我们将创建一个PNG格式的图像文件,下面的代码是一个包含所创建的图像的MIME类型的头部:
<? header ("Content-type: image/png");
使用ImageCreate()创建一个代表空白图像的变量,这个函数要求以像素为单位的图像大小的参数,其格式是ImageCreate(x_size, y_size)。如果要创建一个大小为250×250的图像,就可以使用下面的语句:
$newImg = ImageCreate(250,250);
由于图像还是空白的,因此你可能会希望用一些彩色来填充它。你需要首先使用ImageColorAllocate()函数用其RGB值为这种颜色指定一个名字,这一函数的格式为ImageColorAllocate([image], [red], [green], [blue])。如果要定义天蓝色,可以使用如下的语句:
$skyblue = ImageColorAllocate($newImg,136,193,255);
接下来,需要使用ImageFill()函数用这种颜色填充这个图像,ImageFill()函数有几个版本,例如ImageFillRectangle()、ImageFillPolygon()等。为简单起见,我们通过如下的格式使用ImageFill()函数:
在PHP编程中,如果你使用文本型数据库,也许会为它的分类排序问题感到头痛。下面小阳介绍一下如何运用PHP结合JavaScript脚本实现这个功能:如下图,当用户点击相应的标题类别时,如果该类别与原类别不同,则按相应类别相同的升降序排列;当点击类别与原类别相同,则按该类别与原来相反的顺序排列。(即假如图中把鼠标放至“歌手”标题,将提示“按[歌手][升序]排列”。)
  例子中文本数据库的格式为:每行的信息都各保存在一个文件下,文件内容格式为“歌曲名称|歌手|大小”。例如文件“找一个字代替.txt”的内容是“找一个字代替|卓依婷|48554”,每个文件都只有一行,且保存在“data”目录下。
 
  分类排序的思路是:将要排序的该类别所在信息读取到[]数组中,对[]进行排列,得到新排列的下标的数组[],再按下标的数组依次把文件读出来即可。
 
  下面我们编写这个PHP文件。
 
  OK,我们的程序已经写好了。程序中读了两次文件,这样可能速度可能慢些;当然可以改为第一次读的时候就把文件的内容存储到一个数组中,这样免了第二次的读取,但这样需要占用较多的服务器内存,为安全起见只好牺牲一点速度了。
 
  今天小阳不但向大家介绍了文本数据库的分类排序方法,还顺便较详细地介绍了PHP和JavaScript相结合的编程方法、三元运算子的特殊应用、状态栏的显示规律和HTML元素自定义属性的应用等。好了,在服务器上运行一下刚才编好的PHP文件看看(点击这里下载演示文件)。细心的读者很快就会发现还缺了什么。对了,是分页显示!可惜,限于篇幅,这里就不介绍了,你自己去完善它吧。
php中文章标题很多的情况下怎样才能分页显示呢?
  下面根据本人的体会把主要代码公开,希望对初学网友有所帮助.
$page_size=10;(每页显示数量)
$sql='select count(*) as rnt from mydbf';
$sql .= ' order by mytime desc ';
$qh=mysql_query($sql);
$data=mysql_fetch_array($qh);
$nr=$data["cnt"];
$pages=intval($nr/$page_size);
if($nr%$page_size) $pages ;
if(empty($page))
{
$page=1;
$offset=0;
}
else
{
$offset=$page*$page_size-$page_size;
}
?>
<!--
$total = mysql_numrows($qh);
$total=$nr;
echo "<td colspan=3>";
//显示所有文章
if (!isset($page)){
$page = 0;
}
//分页开始
$start= $page*$page_size;
$offset=$start;
$totalpage =ceil($total/$page_size);
$pagestr ='[<font color=green>总数</font>]:'.$total;
$pagestr.= "&nbsp".($page 1).'/'.$totalpage.'页'."&nbsp";
$xjz1= "<a href=$php_self?";
$sql = 'select mytxt,content_id,clicknum,from mydbf ';
$sql .= ' order by ltime desc limit '.$offset.','.$pageno;
$res = mysql_query($ls_sql, $dbh); 
$countloop = 0;
while ($row = mysql_fetch_array($res)) { 
....
}
$xjz1= "<a href=$php_self?";
$xjz2=substr($xjz1,8);
?>
<table border="0" width="100%" cellpadding="0" cellspacing="0" height="0">
<form action="<?echo $php_self.$xjz2."&page=$page";?>" method="post">
<td width="100%" height="9"> 
<table border="0" width="100%" cellspacing="0" cellpadding="0">
<tr><td width="72%" align="center" nowrap>&nbsp;<b>分页</b>:<?if($page==1){?>首页 
上一页 <?
   }
   else
   {
   $p=$page-1;
   echo "$xjz1&page=1>首页</a> $xjz1&page=$p>上一页</a>";
<?PHP 
if ($domain) 
{ 
if ($domain) 
    { 
     
    $fp = fsockopen( "rs.internic.net", 43, &$errno, &$errstr, 10); 
    if (!$fp) 
  { 
    echo "$errstr ($errno)
n"; 
    } 
    else 
    { 
    fputs($fp, "$domainrn"); 
    while(!feof($fp)) 
        { 
        $buf = fgets($fp,128); 
        if (ereg( "Whois Server:", $buf)) 
            { 
            $server = str_replace( "Whois Server: ", "", $buf); 
            $server = trim($server); 
            } 
        } 
    fclose($fp); 
    } 
    if ($server) 
        { 
        echo "<B>$domain is registered at $server:</B><BR>"; 
        echo "<PRE>"; 
        $fp = fsockopen($server, 43, &$errno, &$errstr, 10); 
        if(!$fp) 
            { 
            echo "Could not open connection to $server on port 43.n"; 
            echo "$errstr ($errno)
n"; 
            } 
        else 
            { 
            fputs($fp, "$domainrn"); 
            while(!feof($fp)) 
                { 
                echo fgets($fp,128); 
                } 
            fclose($fp); 
            } 
        } 
    else  { 
        echo( "<b>$domain does not appear to be registered.</b><BR>"); 
        } 
    echo ( "</PRE><BR>"); 
    } 
 
} 
?> 
<FORM ACTION=" <?PHP echo($PHP_SELF); ?>" METHOD="post"> 
 查找 .com, .org, and .net 主机
 
 主机名: <INPUT TYPE="text" NAME="domain" SIZE="40" MAXLENGTH="100"> 
 <INPUT TYPE=submit VALUE="Find out"><INPUT TYPE=reset VALUE="Reset"> 
</FORM>
这是WHOIS查找的代码。
 
<?
function whois_request($server, $query) {
$data = "";
$fp = fsockopen($server, 43);
if($fp) {
fputs($fp, $query."rn");
while(!feof($fp)) {
$data .= fread($fp, 1000);
}
fclose($fp);
}
return $data;
}
?>
<FORM>
<INPUT TYPE=HIDDEN NAME=action VALUE=query>
Server: <INPUT TYPE=TEXT NAME=server VALUE="<?echo $server?>"> <SMALL>(ie: whois.networksolutions.com)</SMALL><BR>
Domain: <INPUT TYPE=TEXT NAME=query VALUE="<?echo $query?>"> <SMALL>(ie: wackowoh.com)</SMALL><BR>
<INPUT TYPE=SUBMIT VALUE=" OK ">
</FORM>
<?
if($action == "query") {
$data = whois_request($server, $query);
echo "Sent $query to $server.<p>";
echo "Output: <p><pre>$data</pre><p>";
}
?>
[!--infotagslink--]

相关文章

  • ps动态环绕动画效果怎么制作

    ps动态环绕动画效果是现在很多人都非常喜欢的,大多数人还不知道ps动态环绕动画效果怎么制作下面文章就给大家介绍下ps怎么制作科技感十足的动态环绕动画效果,一起来看看...2017-07-06
  • vue 实现动态路由的方法

    这篇文章主要介绍了vue 实现动态路由的方法,文中示例代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下...2020-07-06
  • Vue实现动态查询规则生成组件

    今天我们来给大家介绍下在Vue开发中我们经常会碰到的一种需求场景,本文主要介绍了Vue动态查询规则生成组件,需要的朋友们下面随着小编来一起学习学习吧...2021-05-27
  • jQuery动态添加与删除tr行实例代码

    最近由于项目的需要,需要动态的添加和删除table中的tr,感觉用JS可以实现,但是在网上找了一下,单纯的自己写JS,感觉太麻烦,而且也不好维护。于是想到了最近学的jQuery。这篇文章给大家用实例介绍了jQuery动态添加与删除tr行的方法,有需要的朋友们可以参考借鉴。...2016-10-20
  • JS创建Tag标签的方法详解

    这篇文章主要介绍了JS创建Tag标签的方法,结合具体实例形式分析了javascript动态操作页面HTML元素实现tag标签功能的步骤与相关操作技巧,需要的朋友可以参考下...2017-06-15
  • JavaScript动态创建div属性和样式示例代码

    1.创建div元素: Javascript代码 复制代码 代码如下: <scripttypescripttype="text/javascript"> functioncreateElement(){ varcreateDiv=document.createElement("div"); createDiv.innerHTML="Testcreateadiveleme...2013-10-13
  • C#中动态显示当前系统时间的实例方法

    想在网页中动态地显示当前系统的时间,找了好多,不过都是一些停在那里不动的。。。不过皇天不负有心人,终于让我找到了...2020-06-25
  • c#动态调用Webservice的两种方法实例

    这篇文章介绍了c#动态调用Webservice的两种方法实例,有需要的朋友可以参考一下...2020-06-25
  • SQL Server中执行动态SQL

    本文详细讲解了SQLServer中执行动态SQL的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2022-05-19
  • jQuery为动态生成的select元素添加事件的方法

    下面小编就为大家带来一篇jQuery为动态生成的select元素添加事件的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2016-09-01
  • python 实现将Numpy数组保存为图像

    今天小编就为大家分享一篇python 实现将Numpy数组保存为图像,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-04-27
  • vue2 中如何实现动态表单增删改查实例

    本篇文章主要介绍了vue2 中如何实现动态表单增删改查实例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧 ...2017-06-15
  • C#图像透明度调整的方法

    这篇文章主要介绍了C#图像透明度调整的方法,涉及C#操作图像透明度的相关技巧,需要的朋友可以参考下...2020-06-25
  • C#实现动态显示及动态移除图片方法

    这篇文章主要介绍了C#实现动态显示及动态移除图片方法,对于C#的初学者了解图像操作有一定的帮助,需要的朋友可以参考下...2020-06-25
  • 用C++面向对象的方式动态加载so的方法

    下面小编就为大家带来一篇用C++面向对象的方式动态加载so的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-04-25
  • C#图像亮度调整的方法

    这篇文章主要介绍了C#图像亮度调整的方法,涉及C#操作图像亮度的相关技巧,需要的朋友可以参考下...2020-06-25
  • PS如何创建变形文字 ps给文字变形的方法

    PS怎么创建变形文字?ps中想要给输入的文字变形,该怎么调整文字的显示形态呢?下面我们就来看看ps给文字变形的方法,需要的朋友可以参考下 我们在图层上输入文字后,可以...2017-07-06
  • 什么是cookie?js手动创建和存储cookie

    什么是cookie? cookie 是存储于访问者的计算机中的变量。每当同一台计算机通过浏览器请求某个页面时,就会发送这个 cookie。你可以使用 JavaScript 来创建和取回 cookie 的值。 有关cookie的例子: 名字 cookie 当访...2014-05-31
  • javascript创建对象的几种模式介绍

    下面小编就为大家带来一篇javascript创建对象的几种模式介绍。小编觉得挺不错的,现在分享给大家,也给大家做个参考...2016-05-09
  • idea 无法创建Scala class 选项的原因分析及解决办法汇总

    这篇文章主要介绍了idea 无法创建Scala class 选项的解决办法汇总,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-09-02