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