2011-12-17 3 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

Скорее всего, что ваше изображение кэшируются браузером, так что есть только один запрос делается и та же картина повторяется для всех десяти звонков.

Необходимо, чтобы каждый URL выглядел по-разному, используя случайный параметр GET, например. например:

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

Обратите внимание, что это делает изображения незащищенными: GD будет запускаться заново по каждому запросу. Но похоже, что это то поведение, которое вы хотите.

+0

У меня был случайный не в том месте, XD. – tatersalad58

+0

@tatersalad ах, я этого не видел. Странно - это звучит почти невозможно. Можете ли вы показать код, который использовался для случайных строк запроса? –

+1

Я понял, у меня был случайный вне моей петли, дерп. Спасибо. C: – tatersalad58

Смежные вопросы