加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

如何使用PHP制作嘈杂的背景图片?

发布时间:2020-12-13 16:30:51 所属栏目:PHP教程 来源:网络整理
导读:我正在寻找一个只是噪音的形象,也许是这样的: alt text http://www.loriswebs.com/tutorials/images/tealtexture3.jpg 理想情况下,我也想改变颜色.关于如何产生这个的任何想法? 产生随机噪声非常简单.您可以很容易地完成这一点,其中包括一些PHP的图像库,包
我正在寻找一个只是噪音的形象,也许是这样的:

alt text http://www.loriswebs.com/tutorials/images/tealtexture3.jpg

理想情况下,我也想改变颜色.关于如何产生这个的任何想法?

产生随机噪声非常简单.您可以很容易地完成这一点,其中包括一些PHP的图像库,包括 GD functions.我相信在ImageMagick中将是类似的.

如果要产生完全随机的噪点,则可以为每个颜色和每个像素使用随机值. GD可能看起来像这样:

//random colored noise
$x = 150;
$y = 150;
$im = imagecreatetruecolor($x,$y);
for($i = 0; $i < $x; $i++) {
    for($j = 0; $j < $y; $j++) {
        $color = imagecolorallocate($im,rand(0,255),255));
        imagesetpixel($im,$i,$j,$color);
    }
}    
header('Content-Type: image/png');
imagepng($im);

生成这个:

但是,您清楚发布的示例图像看起来不像完全随机的颜色噪声.它似乎更像是两种颜色之一的任意选择,一种有点灰色的像素或一个有点色的像素.你可以这样做:

//two-color random noise
$x = 150;
$y = 150;
$im = imagecreatetruecolor($x,$y);
$color1 = imagecolorallocate($im,200,240,242);
$color2 = imagecolorallocate($im,220,220);
imagefill($im,$color1);
for($i = 0; $i < $x; $i++) {
    for($j = 0; $j < $y; $j++) {
        if (mt_rand(0,1) == 1) imagesetpixel($im,$color2);
    }
}
header('Content-Type: image/png');
imagepng($im);

生成这个:

您的示例似乎还有点复杂,像素似乎出现在小组中,从而产生更为复杂的外观.您可以通过调整循环逻辑(如果需要)或着色小方块而不是单个像素来模拟.

关于这种类型的一代的一个有趣的事情是,如果您使用它代替mt_rand(),您可以在Windows平台上实际看到rand()函数的故障. Discernible patterns can develop由于该功能/平台组合的限制而引起的噪音.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读