在论坛我们经常看到一回复图片就更改等,这功能是怎么实现的呢,其实更验证码道理相同。

新建文件 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();

------解决方案--------------------------------------------------------
这是正常的
因为,图片不在你的服务器上,只是从远程读过来,再传给客户端
你服务器,只是一个中转
既然多了一层中转,当然慢了,

有一个解决的办法
就是,
你可以建立一个缓存的目录
当你碰到一个请求时,查看服务器缓存中是否有,
如果没有,这个请求是第一次,就把远程的图片,存在服务器上
如果有,直接把本服务器的传给客户端

这样,每张图片,就只要中转一次了。

img src某个php文件输出图片(回复更改图片readfile读取图片等)的更多相关文章

  1. PPT文件流转为图片,并压缩成ZIP文件输出到指定目录

    实现流程: 接收InputStream流->复制流->InputStream流转为PPT->PPT转为图片->所有图片压缩到一个压缩文件下 注意: 1.PPT文件分为2003和 ...

  2. Servlet从本地文件中读取图片,并显示在页面中

    import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpSer ...

  3. HTML中上传与读取图片或文件(input file)----在路上(25)

    input file相关知识简例 在此介绍的input file相关知识为: 上传照片及文件,其中包括单次上传.批量上传.删除照片.增加照片.读取图片.对上传的图片或文件的判断,比如限制图片的张数.限 ...

  4. 文件正在上传的转圈圈gif图片引出的fixed定位和absolute定位

     文件正在上传的转圈圈gif图片  一.文件上传时,未上传返回成功状态之前给个gif动态图片显示在页面,改善用户体验. <!--S 遮罩层 --> <div id="mas ...

  5. IDEA指定.class文件输出位置

    1.File > Project Structure > Project > Project compiler output  项目中的默认编译输出总目录 2.我习惯于把.class ...

  6. 上传图片用图片文件的对象hash哈希值判断图片是否一样,避免重复提交相同的图片到服务器中

    上传图片用图片文件的对象hash哈希值判断图片是否一样,避免重复提交相同的图片到服务器中 前端:要用到一个插件,点击下载 <!DOCTYPE html> <html xmlns=&q ...

  7. Java微信公众平台开发(七)--多媒体消息回复之图片回复

    之前我们在做消息回复的时候我们对回复的消息简单做了分类,前面也有讲述如何回复[普通消息类型消息],这里将讲述多媒体消息的回复方法,[多媒体消息]包含回复图片消息/回复语音消息/回复视频消息/回复音乐消 ...

  8. jfinal 后台文件上传(结合上一篇(h5 图片回显))

    前端用了jquery.form.js插件异步提交表单 $("#imgForm").ajaxSubmit();//户主头像 /** * * @description 上传户主头像 * ...

  9. SLF4j 居然不是编译时绑定?日志又该如何正确的分文件输出?——原理与总结篇

    各位新年快乐,过了个新年,休(hua)息(shui)了三周,不过我又回来更新了,经过前面四篇想必小伙伴已经了解日志的使用以及最佳实践了,这个系列的文章也差不多要结束了,今天我们来总结一下. 概览 这篇 ...

随机推荐

  1. python开发环境安装

    1.首先安装python-3.4.2.msi,此为python主程序,双击安装,根据自身的情况做选择,也可以使用默认设置,一路next也没什么问题. 2.设置环境变量=>编辑Path,在最后加上 ...

  2. 【转】install intel wireless 3165 driver for ubuntu 14.04.3

    [转]install intel wireless 3165 driver for ubuntu 14.04.3 Ubuntu 14.04.3 with 3.19 kernel can’t drive ...

  3. python中decorator

    先讲一下python中的@符号 看下面代码 @f @f2 def fun(args, args2, args3, args4, ……): pass 上面代码相当于 def fun(args, args ...

  4. [Swust OJ 772]--Friend(并查集+map的运用)

    题目链接:http://acm.swust.edu.cn/problem/772/ Time limit(ms): 1000 Memory limit(kb): 65535    Descriptio ...

  5. was服务器下修改jsp无效果

    使用了jsp静态导入,修改了导入的jsp页面,但是目标页面没出现效果.先说下静态导入和动态导入的区别: include指令用于引入其它JSP页面,如果使用include指令引入了其它JSP页面,那么J ...

  6. JavaScript 导学推荐

    基本开始js学习的时候,可能会觉得很混乱,一开始都是从一些简单的表单验证还有拷贝别人效果代码,然后再慢慢去深入了解.我是觉得js是需要一定语言编程基础,我是觉得随着深入,JS的里面实在不算太好理解,个 ...

  7. 利用Linux系统函数alarm() 来检测计算机性能

    大家都知道,alarm() 是Linux系统自带的定时函数,操作系统管理进程时为每个进程分配了一个定时器,下面利用1秒钟定时,看计算机能计数多少来判断计算机的性能: #include<stdio ...

  8. QT VS检测内存泄漏

    测试程序:http://download.csdn.net/detail/ajaxhe/4085447 vld-2.2.3: http://vld.codeplex.com/releases/view ...

  9. C++ ofstream和ifstream详细用法

    转载地址:http://soft.chinabyte.com/database/460/11433960.shtml ofstream是从内存到硬盘,ifstream是从硬盘到内存,其实所谓的流缓冲就 ...

  10. ubuntu ???????????? no permissions 问题解决

    近期的一个项目须要用到linux开发android程序! 发现ubuntu有小米开发连接不上!  搞了一个下午才搞成功! 看看吧! 小米手机利用USB连接到Ubuntu 10.04系统.执行以下的命令 ...