小墨の博客

梦想需要付诸行动,否则只能是梦

通过php返回图片

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函数可以明显的减少不必要的代码量,是不是有些类似c++,java中的模板?


调用是可以写成<img src="getImage.php?id=1">,通过改变id值便可以达到更改图片的目的。


参考:https://www.cnblogs.com/rereadyou/articles/2161021.html

张小弟之家

本文链接:
文章标题:

本站文章除注明转载/出处外,均为原创,若要转载请务必注明出处。转载后请将转载链接通过邮件告知我站,谢谢合作。本站邮箱:admin@only4.work

尊重他人劳动成果,共创和谐网络环境。点击版权声明查看本站相关条款。

    发表评论:

    搜索
    本文二维码
    标签列表
    站点信息
    • 文章总数:503
    • 页面总数:20
    • 分类总数:92
    • 标签总数:207
    • 评论总数:58
    • 浏览总数:211726

    | | |
    | |  Z-Blog PHP