我想从其他网站获取图像并显示在我的网站上。我只想在页面上显示时临时将图像存储在我的身边,以便用户认为图像来自我的网站。有可能吗?怎么样?提前致谢。仅在网页上显示时在php中临时存储图像
例如: - 想象在服务器中生成了一些图(某些网络监视图像吸烟),并且这些图存储在文件夹中作为.png
格式。
例如: - imagine_this_url_has_a_graph(但是这仅仅是一个页面)
,使用户想显示在另一个网站的图表。
我想从其他网站获取图像并显示在我的网站上。我只想在页面上显示时临时将图像存储在我的身边,以便用户认为图像来自我的网站。有可能吗?怎么样?提前致谢。仅在网页上显示时在php中临时存储图像
例如: - 想象在服务器中生成了一些图(某些网络监视图像吸烟),并且这些图存储在文件夹中作为.png
格式。
例如: - imagine_this_url_has_a_graph(但是这仅仅是一个页面)
,使用户想显示在另一个网站的图表。
当图像请求对服务器发出请求时,只需使用fopen()
打开远程图像,然后使用fpassthru()
将其传递。
一个简单的缓存系统可以做到这一点。给定一个HTML文件,如:
<body>
<img src="imagesource.php?file=1" />
</body>
你可以创建一个像你的图像数据源(imagesource.php):
<?php
$files = array(
'http://somesite.com/image_to_cache.gif',
'http://somesite.com/image_to_cache2.gif'
);
if(!isset($_REQUEST['file']) || !isset($files[$_REQUEST['file']])) {
header('HTTP/1.0 404 Not Found');
exit;
}
// do we already have the cached file?
$requested_file = $files[$_REQUEST['file']];
$cache_dir = '/tmp/cached_images';
$cache_file = md5($requested_file);
$cache_path = $cache_dir . '/' . $cache_file;
header('Content-Type: image/gif');
if(file_exists($cache_path)) {
readfile($cache_path);
exit;
}
//need to create the cache.
$data = file_get_contents($requested_file);
file_put_contents($cache_path, $data);
echo $data;
这将在本地缓存远端图像,如果他们还没有被下载,并在请求时将其输出到浏览器。
使用fileread()
而不是fopen()
如果您想要输出图像,否则会出现错误。
“让用户认为图片来自我的网站”为什么? – joetsuihk 2010-01-15 07:02:56
根据源站点的策略,这被称为“缓存”或“盗窃”。如果他们不介意使用他们的图像,缓存是礼貌。如果他们这样做,我会非常小心。 – 2010-01-15 07:09:47
“”,以便用户认为图像来自我的网站“为什么?”;取信誉和别人的工作? – 2010-01-15 07:10:37