PHP学习笔记6 - 图像

相关中文参考手册:http://w.yi.org/ftp/FAPM/PHP/zh/ref.image.html

 

向来跟图像沾边的东西比较容易提起我兴趣。这个要好好学习一下了。

 

图像格式

 

JPEG

 

音“jay-peg”。有损压缩,人眼可忍受。不适合绘制线条、文本或颜色块

 

PNG

 

音“ping”。无损压缩,适合包含文本、直线或简单颜色块。提供可变透明度、微细修正和二维空间交错。不支持动画。动画支持在其扩展格式MNG中,不知道开发完成了没。目前的浏览器应该还不支持。

 

GIF

 

无损压缩,适合包含文本、直线或简单颜色块。支持动画。

 

创建图像的步骤


1.创建一个背景图像,以后的操作都将基于此背景图像。

 

2.在背景图像上绘制图形轮廓或输入文本。

 

3.输出最终图形。

 

4.清除所有资源。

 

例:

 

Code

 

这个是最简单的流程。

 

ImageFill()函数的疑问

 

查手册说是对该点以及连通区域进行填充,但是不清楚是四连通还是八连通。

 

关于header()函数

 

header()函数和绘图没有直接关系。该函数发送一个HTML标题字符串。通常,浏览器中接收一个文件时,Web服务器首先发送的内容是MIME类型,以告诉浏览去应该怎样解析接下来的数据。

 

对于一个HTML或者PHP页面,最先发送的是:Content-type: text/html

 

我们的这个例子中则是通过 Content-type: image/png 告诉浏览器将发生的是一个png图像而不是常规的HTML输出。比较奇怪的是实际进行测试的时候,发送其他类型或者不发送这个标题,IE7浏览器一样可以显示图像。但这在FF和Opera中行不通。

 

header()的一个典型应用是http重定向:header('Location: http://www.cnblogs.com/zhengchuyu/');

 

header()只发送一次,也就是说如果同一页面中已经发送一次了,接下来出现的header()函数将不会被执行。

 

关于imagepng()函数

 

实际上这个函数具有两个参数。第二个如果不设置的话默认发送到浏览器显示。也可以对其进行设置一个文件名,将发送的文件写到某处。

 

使客户端显示图像的三种方式


1.如上述方式,一个由图像组成的页面;

 

2.将图像写到文件中,用img标签指向它;

 

3.将图像创建脚本置于img标签中,实际上是一种内嵌图像的方式。

 

如:<img src="simplegraph.php" height="200" width="200" alt="test" />

 

一些细节

中文编码

 

在PHP图像中输出中文,需要使用utf-8编码,有现成的转换函数可用:

 

$utf8_img_text = iconv("gb2312", "utf-8", $text);

 

保留图像透明

 

我们可以通过读入现有图像进行图象创建,如通过ImageCreateFromPng(),ImageCreateFromJpeg(),ImageCreateFromGif()。当读入一个具有透明背景的图像时,我们需要保留其透明通道,才可以让图像保持透明。

 

imagesavealpha($im, true);

 

读入字体文件 

 

需要读入字体文件的时候,可能会遇到文件访问权限的问题(无法访问硬盘上其他目录)提示Invalid font filename。目前的解决办法是将字体文件拷贝到脚本所在目录,指定文件目录

 

putenv('GDFONTPATH='.realpath('.'));

 

 

 

 

posted @ 2008-07-28 00:32  东捣CY  阅读(372)  评论(0编辑  收藏  举报