我知道 PHP 的 GD 库用于操作图像,并且它具有可用于创建包含文本的图像的方法,例如imagettftext()
。这用于诸如验证码之类的事情。
但是,我遇到了下面的示例,其中可能使用 GD 创建图像,仅使用点,但是对它们进行排列,以便在图像中显示的文本形状具有更高的密度。
我想学习如何利用这种技术,但无法拼凑出如何做到这一点。我想象背景只是随机的点,但是,我似乎无法理解如何将这些点分组为指定字体的字符形状。
最佳答案
- 只需创建一个黑色图像,然后添加字体即可。
- 制作一个循环,放置随机黑点。
- 运行另一个循环并放置白点作为噪声。
header('Content-Type: image/png');
putenv('GDFONTPATH=' . realpath('.'));
$im = imagecreatetruecolor(400, 200);
$black = imagecolorallocate($im, 0, 0, 0);
$white = imagecolorallocate($im, 255, 255, 255);
imagefttext($im, 120.0, -20.0, 200, 120, $white, 'arialblack', '4');
for ($i = 0; $i < 1e5; $i++) {
imagesetpixel($im, rand(0, 400), rand(0, 200), $black);
}
for ($i = 0; $i < 2e3; $i++) {
imagesetpixel($im, rand(0, 400), rand(0, 200), $white);
}
imagepng($im);
imagedestroy($im);
结果看起来像这样
您可以通过使用更多的黑点或使用较浅的字体(可能是轮廓字体)来使效果更加困难。
您可以通过使用图像噪声图并将它们混合在一起来提高性能。
关于php - 如何通过 PHP 创建由点组成的文本图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63146149/