通过php返回图片
php 开发中,遇到要显示图片的时候一般的做法是:
1. 在 html 页面写上诸如 <img src={photo}> 这样的代码,这里假设使用的模板为phplib;
2. 通过php程序查询数据库,然后返回一个图片名称信息,将这个信息在php程序里拼接成正确的图片地
址,如拼接成 "$avatar = '../images/avatar.jpg';
3. 使用 $tpl->set_var('photo', $avatar) 向模板传值进行解析。
还有一种做法是写单独的调用程序,然后所有需要显示图片的地方都调用这个程序,这个程序再根据接收
到的参数来返回一个图片,实行起来就是修改步骤2:
可以写调用程序如下:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 //$photo_name 为查询数据库得到的实际图片名称,如,avatar.jpg
2 $filename = $photo_name;
3
4 //$image = getimagetype($filename);
5 //$mime = image_type_to_mime_type($image);
6 //上面两句与下面两句的作用相同
7
8 $image = getimagesize($filename);
9 $mime = image_type_to_mime_type($image[2]);
10
11 $fileType = substr(strstr($mime,'/'), 1);
12
13 $img_out_string = "header('Content-type:image/$fileType');
14 image$fileType(imagecreatefrom$fileType('$filename'));
15 ";
16 eval($img_out_string);
这里使用到了php中的eval函数,这个函数将字符串参数当做php代码来运行,(使用这个函数可以达到类
似元编程的目的)。使用这个函数主要是因为图片有多种格式,jpg,gif,png等等,而在用imagecreatefromjpeg,imagecreatefromgif,imagecreatefrompng方式时需要将相似的语句写多次,并且
还得写一个switch,使用eval函数可以明显的减少不必要的代码量,是不是有些类似c++,java中的模板
?。
调用是可以写成 <img src=getImage.php?id=1>,通过改变id值便可以达到更改图片的目的。