img src某个php文件输出图片(回复更改图片readfile读取图片等)
2013-08-04 16:41 youxin 阅读(3861) 评论(0) 收藏 举报在论坛我们经常看到一回复图片就更改等,这功能是怎么实现的呢,其实更验证码道理相同。
新建文件 randimage.php 加入以下代码:
<?php $dir='../../images/'; $iforder=1;//顺序显示还是随机;1为顺序,0为随机 $ifcircle=1; //顺序显示的时候是否循环播放,1为循环播放,0为不循环 session_start(); $handle=opendir($dir); while($fileName=readdir($handle)) { if($fileName!='.'&&$fileName!='..') { $fileList[]=$fileName; } } closedir($handle); if($iforder==1) { if(isset($_SESSION['order'])) { if($_SESSION['order']<count($fileList)-1) { $_SESSION['order']++; } else { if($ifcircle==1) { $_SESSION['order']=0; } } } else { $_SESSION['order']=0; } $i=$_SESSION['order']; } else { $num=count($fileList)-1; $i=rand(0,$num); } $file=$dir.$fileList[$i]; $info=getimagesize($file); header("Content-type:{$info['mime']}"); // print_r($info); readfile($file);
这个php就输出了一个图片文件。
我们在其他网页调用就可以了。
<img src="randomImage.php" border=0 />
src为生成图片的php文件。
附一篇帖子:
用readfile函数读取图片时碰到的问题
我打算在一个页面显示图片,不是直接给出img的scr,而是由一个readfile函数输入,相当于由服务器读取图片再输出.
前台的页面如下:
<img src="http://mywebsite.com/getobj1.php?path=www.abc.com/images/11.jpg"" border="0">
<img src="http://mywebsite.com/getobj1.php?path=www.abc.com/images/12.jpg"" border="0">
...
<img src="http://mywebsite.com/getobj1.php?path=www.abc.com/images/11.jpg"" border="0">
后台的getobj1.php代码如下
<?php
header('Content-Type: image/jpeg');
readfile($_GET["path"]);
?>
现在问题是这样的:
图片都能显示正常,而且也的确是由服务器读取来的.(因为有些图片直接访问不到..GFW)
但是这些图片显示的时候是一个一个显示出来的.而不是像正常访问的时候那样是一起显示出来的.
这个有什么办法没,是图片所在服务器的问题还是PHP的机制问题?
请大家帮帮忙
------解决方案--------------------------------------------------------
应该是代码的问题 楼主可以从缓存这个角度去考虑 可以一次性读取 缓存起来 再输出  
ob_start
···//处理读出图片显示等操作
ob_flush();
flush();
------解决方案--------------------------------------------------------
这是正常的
因为,图片不在你的服务器上,只是从远程读过来,再传给客户端
你服务器,只是一个中转
既然多了一层中转,当然慢了,
有一个解决的办法
就是,
你可以建立一个缓存的目录
当你碰到一个请求时,查看服务器缓存中是否有,
如果没有,这个请求是第一次,就把远程的图片,存在服务器上
如果有,直接把本服务器的传给客户端
这样,每张图片,就只要中转一次了。
 
                    
                 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号