image — Рисование прямоугольников в php не работает

Я создаю изображение в php и заполняю его прямоугольниками размером 10х10 пикселей, заполненными цветом.

$image = imagecreate(150,150);
$background = imagecolorallocate($image, 0, 0, 0); //black background
for ($row=0; $row < 15; $row++) {
for ($col=0; $col < 15; $col++) {
$x1 = 10* $col;
$y1 = 10*$row;
$x2 = 10*($col + 1);
$y2 = 10*($row + 1);

imagefilledrectangle($image, $x1,$y1,$x2,$y2, imagecolorallocate($image, 100,100,100)); //grey rectangle
}
}

imagepng($image, "ciph.png");

Это работает для небольших изображений размером не более 150×150 пикселей, и я получаю полностью серый прямоугольник. но как только я попробую большие изображения. это только добавляет прямоугольники к части изображения. Есть идеи, что вызывает это? кажется, есть ограничение на количество отдельных объектов, которые я могу нарисовать.

введите описание изображения здесь

15×15

введите описание изображения здесь

18×18

я посчитал, и он, кажется, рисует только 256 прямоугольников … не похоже на совпадение, что это от 2 до 8-й степени.

Любая помощь приветствуется! Благодарю.

1

Решение

Проблема заключается в том, как вы создаете образ. Если вы измените первую строку с:

$image = imagecreate(150,150);

чтобы:

$image = imagecreatetruecolor(150,150);

это позволит нарисовать более 256 прямоугольников на изображении.

imagecreatetruecolor() также придает изображению черный фон по умолчанию вместо пустого фона, который imagecreate() дает, так что вам не понадобится и вторая строка.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector