php - 如何通过 PHP 创建由点组成的文本图像?

标签 php image gd

我知道 PHP 的 GD 库用于操作图像,并且它具有可用于创建包含文本的图像的方法,例如imagettftext()。这用于诸如验证码之类的事情。

但是,我遇到了下面的示例,其中可能使用 GD 创建图像,仅使用点,但是对它们进行排列,以便在图像中显示的文本形状具有更高的密度。

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

Example of an image I'd like to learn to recreate.

最佳答案

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

结果看起来像这样

Image

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

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

关于php - 如何通过 PHP 创建由点组成的文本图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63146149/

相关文章:

php - Symfony 无法连接到 MySQL Docker 容器

php - Atom 中的自定义 PHP 代码段

php - 我如何在PHP中绘制略带对角线的渐变填充?

php - 在关联数组中创建新键并向其添加值

javascript - Morris.js 未捕获类型错误 : Cannot read property 'match' of undefined

java 程序下载文件已损坏。为什么?

c# - 获取 RGB 类型 : sRGB or AdobeRGB in C#?

c# - 通过控制台将二进制数据从 C 传递到 C#

python - PIL vs Python-GD 用于裁剪和调整大小

php - Windows/Apache 上的 GD2 字体锁定