您将如何通过 PHP 创建由点组成的文本图像?
How would you create an image of text, composed of dots, via PHP?
我知道 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 的 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);
结果是这样的
您可以通过使用更多的黑点或使用较浅的字体(也许是轮廓字体)来使效果更硬。
您可以通过使用图像噪声图并将它们混合在一起来提高性能。