【问题标题】:Multiple GD images per page每页多个 GD 图像
【发布时间】:2011-12-17 21:01:00
【问题描述】:

对于这个项目,我需要根据 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);
?>

【问题讨论】:

    标签: php html gd


    【解决方案1】:

    您的图片可能正在被浏览器缓存,因此只发出一个请求,并且所有十次调用都重复了同一张图片。

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

    <?php
        for ( $i = 0 ; $i <= 10 ; $i++ )
        {
            $postfix = mt_rand(0, 10000);
            echo "<img src='logo.png?random=$postfix' />";
        }
    ?>
    

    但是请注意,这会使图像无法缓存:GD 将在每次请求时重新运行。但看起来这就是你想要的行为。

    【讨论】:

    • @tatersalad 啊,我没看到。奇怪——这听起来几乎是不可能的。你能显示你用于随机查询字符串的代码吗?
    • 我明白了,我的 for 循环之外有随机数,derp。谢谢你。 C:
    猜你喜欢
    • 1970-01-01
    • 2022-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-29
    • 2013-02-01
    • 1970-01-01
    • 2012-12-10
    相关资源
    最近更新 更多