2011-12-17 23 views
0

對於這個項目,我需要基於來自MySQL數據庫的數據爲頁面創建動態標識。該表存儲圖像索引,前景色和背景色。每頁有多個GD圖像

出於測試目的,我在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); 
?> 

回答

0

有機會,你的形象正在被瀏覽器緩存,所以只有一個正在進行的要求和圖片一樣,重複全部十次通話。

您需要使用隨機的GET參數使每個URL看起來不同。像這樣:

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

但請注意,這使圖像無法緩存:GD將在每個請求上重新運行。但它看起來就是你想要的行爲。

+0

我有錯誤的地方,XD隨機。 – tatersalad58 2011-12-17 21:06:10

+0

@tatersalad啊,我沒有看到。奇怪 - 這聽起來幾乎不可能。你能顯示你用於隨機查詢字符串的代碼嗎? – 2011-12-17 21:07:42

+1

我明白了,我有我的for循環外部的隨機,derp。謝謝。 C: – tatersalad58 2011-12-17 21:08:34