PHP脚本将图像转换为ASCII文本

使用以下代码片段将任何jpeg图像转换为ASCII格式的等效图像。它的工作原理是使用PHP GD2库函数加载图像ImageCreateFromJpeg(),然后确定图像的高度和宽度。然后,它使用这些值遍历图像中的每个像素并找出该像素的颜色。它使用该值创建一个“ span”元素,该元素使用#的文本颜色更改文本的颜色。

此功能的另一个节省时间(和空间)的功能是,它可以检测出任何白色的像素,并仅显示一个 即可。字符代替。

$img = ImageCreateFromJpeg('logo.jpg');
 
// 获取图像的高度和宽度。
$width = imagesx($img);
$height = imagesy($img);
 
echo '<pre style="font-size:1px;">';
 
for ($h=0; $h < $height; $h++) {
 for ($w=0; $w <= $width; $w++) {
  if ($w == $width) {
   echo "\n";
   continue;
  }
  // 在像素位置获取颜色。
  $rgb = ImageColorAt($img, $w, $h);
 
  // 将颜色转换为可用格式。
  $r = ($rgb >> 16) & 0xFF;
  $g = ($rgb >> 8 ) & 0xFF;
  $b = $rgb & 0xFF;
 
  // 检查白色/灰白色。
  if ($r > 200 && $g > 200 && $b > 200) {
   echo '&nbsp;';
  } else {
   echo '<span style="color:rgb(' . $r . ',' . $g . ',' . $b . ');">#</span>';
  }
 }
}
echo '</pre>';

举个例子,下面是一个非常容易识别的图像。

请注意,尽管如果尝试转换非常大的图像,这对于较小的图像大小也可行,但您会发现脚本花费了很长时间。这是因为它依次查看每个像素并将颜色转换为可用的颜色,因此,如果有很多像素,则需要很长时间才能查看每个像素。不仅如此,而且由于创建了所有span元素,因此生成的页面大小将显着增加。

这将转换为下一页上的文本。

ASCII格式的Google徽标

请注意,尽管如果尝试转换非常大的图像,这对于较小的图像大小也可行,但您会发现脚本花费了很长时间。这是因为它依次查看每个像素并将颜色转换为可用的颜色,因此,如果有很多像素,则需要很长时间才能查看每个像素。不仅如此,而且由于创建了所有span元素,因此生成的页面大小将显着增加。