ImageGD не заполняется правильно - PullRequest
2 голосов
/ 09 марта 2011

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

$canvas = imagecreatetruecolor(100, 100);
$gray = imagecolorallocate($canvas, 0xEE, 0xEE, 0xEE);
imagefill($canvas, 0, 0, $gray);    
imagegif($canvas);

Это работает нормально, но если я изменю размер холста на «длинное» изображение, оно не заполняется.

$canvas = imagecreatetruecolor(1, 100);

Это распространенная ошибка? Или мне нужен какой-то другой вариант? Как мне заполнить весь холст?

1 Ответ

1 голос
/ 12 марта 2011

Похоже, ошибка. Я подтверждаю то же самое поведение. Он заполняет только верхние 2 пикселя, если указать ширину равной 1. Аналогично для 2 или 3. 4 кажется волшебным значением - оно начинает работать там.

С другой стороны, эта ошибка, по-видимому, не появляется, если вы используете изображение высотой 1px, т. Е. Я пробовал это, и оно работало как ожидалось:

$canvas = imagecreatetruecolor(100, 1);                                                                                                                 
$red = imagecolorallocate($canvas, 0xEE, 0, 0);                                                                                                         
imagefill($canvas, 0, 0, $red);                                                                                                                     
imagegif($canvas, "output.png");  

Так что это может быть своего рода обходной путь.

...