Я создаю изображение в 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-й степени.
Любая помощь приветствуется! Благодарю.
Проблема заключается в том, как вы создаете образ. Если вы измените первую строку с:
$image = imagecreate(150,150);
чтобы:
$image = imagecreatetruecolor(150,150);
это позволит нарисовать более 256 прямоугольников на изображении.
imagecreatetruecolor()
также придает изображению черный фон по умолчанию вместо пустого фона, который imagecreate()
дает, так что вам не понадобится и вторая строка.
Других решений пока нет …