每页多个GD图像

时间:2011-12-17 21:01:00

标签: php html gd

对于这个项目,我需要根据MySQL数据库中的数据为页面创建动态徽标。该表存储图像索引,前景色和背景色。

出于测试目的,我在Photoshop中创建了一个小图像来模拟图像,我使用随机数创建前景色。

我想在每页创建多个随机图像,但浏览器会在每次调用时保持图像的资源相同。有没有办法在同一页面上创建多个随机图像?

我试图尝试使用随机查询字符串和输出缓冲工作,但他们没有给我任何运气。

截图

http://i.imgur.com/iMP59.png

目录结构

index.php
logo.png/
logo.png/circle.png
logo.png/index.php

的index.php

<html>
<body style="background-color: #000000; color: #FFFFFF; font-family: 'Segoe UI'">
    <?php
        for ( $i = 0 ; $i <= 10 ; $i++ )
        {
            echo "<img src='logo.png' />";
        }
    ?>
</body>
</html>

logo.png / index.php的

<?php
$im = imagecreatefrompng("circle.png");

$white = imagecolorallocate($im, 0xFF, 0xFF, 0xFF);
$black = imagecolorallocate($im, 0x00, 0x00, 0x00);

$x = imagecolorexact($im, 0xFF, 0xFF, 0xFF);
$y = imagecolorexact($im, 0xCC, 0xCC, 0xCC);
$z = imagecolorexact($im, 0xAA, 0xAA, 0xAA);

$randx = mt_rand(0, 255);
$randy = mt_rand(0, 255);
$randz = mt_rand(0, 255);

imagecolorset($im, $x, $randx, $randz, $randz);
imagecolorset($im, $y, $randy, $randy, $randx);
imagecolorset($im, $z, $randz, $randx, $randy);

header('Content-Type: image/png');
imagepng($im);
?>

1 个答案:

答案 0 :(得分:0)

有可能是您的图像被浏览器缓存,因此只有一个请求正在进行,并且所有十个呼叫都会重复相同的图片。

您需要使用随机GET参数使每个网址看起来不同,例如:像这样:

<?php
    for ( $i = 0 ; $i <= 10 ; $i++ )
    {
        $postfix = mt_rand(0, 10000);
        echo "<img src='logo.png?random=$postfix' />";
    }
?>
但请注意,这会使图像无法缓存:GD会在每次请求时重新运行。但看起来这就是你想要的行为。