Drawing on image with the GD library in PHP

一笑奈何 提交于 2019-12-07 17:54:16

问题


I have created a code to generate a random pattern image. it creates an image with given width and height and fills it with small 40x40 pixel rectangles. this is my code:

<?php 

$width = 1000; 
$height = 600;

$image_p = imagecreate($width, $height); 
$baseR = 255 - rand(0, 100);
$baseG = 255 - rand(0, 100);
$baseB = 255 - rand(0, 100);

for ($i = 0; $i <= floor($width / 40); $i++){
for ($j = 0; $j <= floor($height / 40); $j++){
  $val = floor(100 * (rand(0, 100) / 100));
  $r = $baseR - $val;
  $g = $baseG - $val;
  $b = $baseB - $val;
  $color = imagecolorallocate($image_p, $r, $g, $b); 
  imagefilledrectangle($image_p, $i * 40, $j * 40, (($i + 1) * 40), (($j + 1) * 40), $color);

}
}

imagejpeg($image_p, 'my_dir/test.jpg'); 

?>

there's no problem when i set the width to a value like 640 and the height to 400. but if i set the width to 1000 and the height to 800, there will be a blank area on the right side of the image which is not covered by rectangles. I implemented the same code in delphi and it worked perfectly, but in PHP...!


回答1:


Change imagecreate to imagecreatetruecolor

You're creating a palette based image with 255 colors max. You're running out of colors to allocate at the end and it's recycling the last color on the palette for the remainder of the blocks.



来源:https://stackoverflow.com/questions/24395843/drawing-on-image-with-the-gd-library-in-php

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!