Подскажите пожалуйста. Пишу Код (Text): for ($i=0; $i<=300; $i++) { $r=число; $g=число; $b=число; $color[$i] = imagecolorallocate ($image, $r, $g, $b); } для определения цветов и помещения их в массив. Первые 256 цветов размещаются, а остальные все принимают один цвет. Неужели присутствует такое ограничение, и если да то как с этим бороться?
В цветовой схеме RGB 16777216 цветов, если взять кубический корень из этого числа, получим 256. Ещё вопросы?
Я о другом... Переменные $color[0] $color[1] $color[2] ... $color[255] принимают определенный цвет а $color[256] $color[257] $color[258] все имеют тот же цвет что и $color[255].
Потому что цвета, соответствующего индексу массива нет. Неправильно распределяете, значит. Смотрите код, чтобы ни одно из значений не принимало значение > 256, а в произведении не превышали куб из 256
Переменные $r $g $b имеют значения от 0 до 255 это само сабой разумеется. У меня другаю проблемма Первые 256 переменных присваювают цвет, а все остальные хоть какие цвета задавай имеют один и тот же цвет который был задан 256-й переменной.
Задам вопрос по другому. Вот программа Код (Text): <? $diagramWidth = 801; $diagramHeight = 801; // содаем изображение $image = imageCreate($diagramWidth, $diagramHeight); // Регистрируем используемые цвета for ($i=0; $i<=300; $i++) { $r=0; $g=0; $b=0; $color[$i] = imagecolorallocate ($image, $r, $g, $b); } for ($i=300; $i<=500; $i++) { $r=255; $g=255; $b=255; $color[$i] = imagecolorallocate ($image, $r, $g, $b); } // заливаем цветом фона imageFilledRectangle($image, 0, 0, $diagramWidth - 1, $diagramHeight - 1, $color[350]); // Отправляем заголовок Content-type //header("Content-type: image/gif"); header("Content-type: image/png"); // задаем чересстрочный режим imageInterlace($image, 1); // делаем цвет фона прозрачным imageColorTransparent($image, $colorBackgr); // и выводим изображение //imageGIF($image); imagePNG($image); ?> каким должна получиться заливка прямоугольника? Как я понимаю должна быть белой, а она получается черной. Кто объяснит почему так получается, и как с этим можно бороться.
A зачем вам массив с кучей ОДИНАКОВЫХ цветов? О.о Кстати: PHP: <?php $colors = array(); $imageC = imagecreate(1, 1); for($i=0,$r=0,$g=0,$b=0; $i<16777216; ++$i,$r++,$g++,$b++) { $colors[$i] = imagecolorallocate($imageC, $r, $g, $b); } ?> Зрите в суть, пример для вас писал!
Ну, это для примера. Там разные цвета, они берутся из базы данных. А в примере два цыета чтобы точно было понятно какой цвет должен получиться. А получается другой.
Ну в коде проблем нет, он отрабатывает правильно. Смотрите на реальных данных, что именно там не так, по данным вами материалам я проблем не вижу.
Зачем смотреть на реальный код. В реальном тажа самая проблемма. Что и в приведенном. Мне все же интересно почему выводится черная заливка. Должна залиться белым. Apple >>>Ну в коде проблем нет, он отрабатывает правильно. У вас получилось что заливка белая?
Мне ещё раз повторить про 256 цветов? Если сами не догадываетесь - дам решение, но больше объяснять тогда ничего не буду. Заменить imageCreate на imageCreateTrueColor