首页 > 解决方案 > 您将如何通过 PHP 创建由点组成的文本图像?

问题描述

我知道 PHP 的 GD 库用于处理图像,并且它具有可用于创建包含文本的图像的方法,例如imagettftext(). 这用于验证码之类的东西。

但是,我遇到了下面的示例,其中创建了一个图像,大概是使用 GD,仅使用点,但是将它们排列成在图像中显示的文本形状的密度更高。

我想学习如何利用这种技术,但无法拼凑出如何做到这一点。我想背景都是随机的点,但是,我似乎无法理解如何将点分组为指定字体的字符形状。

我想学习重新创建的图像示例。

标签: phpimagegd

解决方案


  • 只需创建一个黑色图像,放上字体。
  • 做一个循环放置随机黑点。
  • 运行另一个循环并为噪声放置白点。
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);

结果看起来像这样

图片

您可以通过使用更多的黑点或使用较浅的字体(可能是轮廓字体)来使效果更加困难。

您可以通过使用图像噪声图并将它们混合在一起来提高性能。


推荐阅读