Ограничение на количество эллипсов

LadN

Новичок
Все, всем спасибо, разобрался
вынес $col_ellipse = imagecolorallocate($img, 0, 0, 255); из цикла и все...
извиняюсь за неудобства, просто реально не понял всего сакрального смысла функции imagecolorallocate
 

dimagolov

Новичок
LadN, ну теперь то ты понял?
как бы ты решил задачу с созданием случайных цветов для каждого элипса? можно без кода, на словах.
 

LadN

Новичок
создал массив из 255 цветов и рандомом выбирал из него ;)
 

LadN

Новичок
спасибо, что помогли разобраться!
просто реально не понял до конца весь смысл функции, думал что она задает текущий цвет рисования (по аналогии с другими языками программирования)

призываю ваши светлые головы решить более сложную и интересную задачу
 

Crys

Двинутый новичок
Сорри, не был около "нормальных интернетов", не мог отписаться.

dimagolov, ты сам хотя бы пытался запустить тестовые примеры? Ты сам понимаешь, что в случае, если ресурс создан через imagecreate, после 256 использований imagecolorallocate - функция начнет выдавать false и в результате цвет будет выставляться фоновый. То есть никакой. В этом и была проблема, описанная в начале этого топика. И НАСРАТЬ на то, ГИФ это, JPG или BMP! ЭТО РЕСУРС!!! Это не картинка, а ресурс! imagecolorallocate начинает возвращать false (то есть перестает выставлять цвет) ДО того, как вызывается imageGif!


Код:
<?php
$img = [b]imagecreate[/b](1000, 300);
$color = imageColorAllocate($img, 0, 0, 0);
imageColorTransparent($img, $color);
for ($i=0; $i<1000;$i++){
   $col_ellipse = imagecolorallocate($img, 0, 0, 255); // <--- ТУТ FALSE после 256-го вызова
   $y=rand(100, 150);
   imagefilledellipse($img, $i, $y, 5, 5, $col_ellipse);
}
header("Content-type: image/gif");
imageGif($img); // <- а тут мы выводим ресурс как гиф и пофигу, imagegif/bmp/jpg - цвета не выставлялись РАНЬШЕ
imagedestroy($img);
?>

imagegif даст только то, что если в ресурсе использовалось более 256 цветов, на картинке их будет 256.
А imagecreatetruecolor в отличии от imagecreate позволяет использовать в ресурсе количество цветов более 256.

-~{}~ 26.10.09 00:37:

Поправка, не количество цветов более 256, а установка цветов более 256 раз. То есть при использовании imagecreate, даже если в результате будет 2 цвета - imagecolorallocate перестает работать после 256 раза.
 

dimagolov

Новичок
Crys, разжую ман для тебя лично. imagecolorallocate создает запись в палитре. вне зависимости от того есть в палитре такой цвет или нет. потому делать это в цикле для одного и того же цвета, это глупость, вызванная непониманием смысла выполняемых действий, а imagecreatetruecolor это костыль. хотя, ты по-моему это понял под конец, но не понял, что это делает бессмысленными все твои предыдущие утверждения.
 
Сверху