PHP学习笔记6 - 图像

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

 

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

 

图像格式

 

JPEG

 

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

 

PNG

 

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

 

GIF

 

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

 

创建图像的步骤


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

 

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

 

3.输出最终图形。

 

4.清除所有资源。

 

例:

 

ContractedBlock.gif ExpandedBlockStart.gif Code
<?php
    
$height = 200;
    
$width = 200;
    
//新建一个真彩色图像
    $im = imagecreatetruecolor($width, $height);
    
//构造颜色,返回可供使用的颜色标识符
    $white = imagecolorallocate($im, 255, 255, 255);
    
$blue = imagecolorallocate($im, 0, 0, 150);
    
    
//在(0, 0)处用蓝色进行区域填充
    imagefill($im, 0, 0, $blue);
    
//绘制直线
    imageline($im, 0, 0, $width, $height, $white);
    
//绘制文本
    imagestring($im, 4, 50, 150, 'Sales', $white);
    
    
//告诉浏览器我们要输出的是图像而不是文本,并且制定MIME类型
    header('Content-type:image/png');
    
    
//输出图像数据
    imagepng($im);
    
    
//销毁图像标识符所占用的资源
    imagedestroy($im);
?>

 

这个是最简单的流程。

 

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 ( ' . ' ));

 

 

 

 

转载于:https://www.cnblogs.com/zhengchuyu/archive/2008/07/28/1254222.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值