如何强制浏览器刷新使用 imagecreatefromjpeg
创建的图像?
我知道这个SO question (PHP force refresh image),如果我有一个真实的图像,但我需要刷新我刚创建的图像,因为关于用户操作(突出显示图像上的不同位置)图像不会刷新我必须手动强制浏览器通过 STRG + F5
重新加载它例如:
主页(由用户打开)包含以下部分:
<img src="http://<URL>/<dir>/draw.php">
draw.php
文件通过以下方式创建图像:
ob_start();
// get $results (= points to highlight) from database - works fine
$img = draw_stars_into_small_starmap($results);
ob_end_clean();
header("Content-type: image/jpeg");
imagejpeg($img, null, 85);
imagedestroy($img);
此功能突出显示图像上的某些点
// $smallimg is the image from
// Results containing the points to highlight
function draw_stars_into_small_starmap($results) {
$smallimg = dirname(__FILE__) . "/nameofpicture.jpg";
// Which color for highlighting
$colormap = array(
'a' => array(240, 120, 120),
'o' => array(255, 128, 0),
'm' => array(0, 255, 0)
);
$width = 450;
$height = 100;
while ($row = od_mysql_fetch_array ($results)) {
$x = $row['xkoord'] / (610 / $width);
$z = $row['zkoord'] / (610 / $height);
$y = $row['ykoord'] / 5;
list($r, $g, $b) = $colormap[$row['type']];
$color = imagecolorallocate($smallimg, $r, $g, $b);
$x = floor($x);
$y = floor($y) + 50;
imagearc($smallimg, $x, $y, 9, 9, 0, 270, $color);
imagecolordeallocate($smallimg, $color);
}
return $smallimg;
}
有人有想法吗?
P.S。我仅希望始终强制浏览器刷新此特定图像(或放置图像的draw.php),但不网站/服务器上的所有图像!< / p>
答案 0 :(得分:1)
您要做的是为图像添加随机数生成器,您希望刷新:
<?php
$rand = mt_rand(11111111,99999999);
?>
<img src="http://<URL>/<dir>/draw.php?<?php print $rand;?>">
这会强制HTML文档刷新浏览器地址,因为它调用的图像的字符串由于随机数而发生了变化。
您还应该使用:
PHP clearstatcache();
位于页面顶部的<img>
页面中,以便每次加载页面时都会清除其文件缓存。如果图像draw.php的实际内容没有正确刷新,则会使用此方法。
还有其他各种方式(.htaccess
,标题等)也可以设置您的服务器以强制浏览器不要缓存图像文件(尽管这可能会显着增加带宽)