PHP学习笔记6 - 图像
相关中文参考手册:http://w.yi.org/ftp/FAPM/PHP/zh/ref.image.html
向来跟图像沾边的东西比较容易提起我兴趣。这个要好好学习一下了。
图像格式
JPEG
音“jay-peg”。有损压缩,人眼可忍受。不适合绘制线条、文本或颜色块
PNG
音“ping”。无损压缩,适合包含文本、直线或简单颜色块。提供可变透明度、微细修正和二维空间交错。不支持动画。动画支持在其扩展格式MNG中,不知道开发完成了没。目前的浏览器应该还不支持。
GIF
无损压缩,适合包含文本、直线或简单颜色块。支持动画。
创建图像的步骤
1.创建一个背景图像,以后的操作都将基于此背景图像。
2.在背景图像上绘制图形轮廓或输入文本。
3.输出最终图形。
4.清除所有资源。
例:
这个是最简单的流程。
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编码,有现成的转换函数可用:
保留图像透明
我们可以通过读入现有图像进行图象创建,如通过ImageCreateFromPng(),ImageCreateFromJpeg(),ImageCreateFromGif()。当读入一个具有透明背景的图像时,我们需要保留其透明通道,才可以让图像保持透明。
读入字体文件
需要读入字体文件的时候,可能会遇到文件访问权限的问题(无法访问硬盘上其他目录)提示Invalid font filename。目前的解决办法是将字体文件拷贝到脚本所在目录,指定文件目录
欢迎交流前端开发技术!