- 有时候我们查看一些网站的源代码的时候,总会发现一些调皮的程序员,不仅代码写的好,连注释都如此的吊炸天。。如下图:
- 如此好玩的东西,那就用世界上最好的语言PHP来实现一下,需要用到GD库,代码如下:
<?php
$file_name = '1.jpg';
$chars = "$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,\"^`'. ";
function getimgchars($color_tran, $chars)
{
$length = strlen($chars);
$r=$color_tran['red'];
$g=$color_tran['green'];
$b=$color_tran['blue'];
$gray = intval(0.2126 * $r + 0.7152 * $g + 0.0722 * $b);
if($gray==0){
return '.';
}
if($gray<196){
$unit = (256.0 + 1)/$length;
return $chars[intval($gray/$unit)];
}
return " ";
}
function resize_img($file_name, $new_height = 100, $new_width = 100, $flage = true)
{
list($width, $height, $type) = getimagesize($file_name);
$fun = 'imagecreatefrom' . image_type_to_extension($type, false);
if ($type == 3) {
$flage = false;
}
$fun($file_name);
$image_p = imagecreatetruecolor($new_width, $new_height);
$image = $fun($file_name);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
if ($flage) {
return $image_p;
} else {
return $image;
}
}
$im = resize_img($file_name);
$width = imagesx($im);
$height = imagesy($im);
$back_text = "";
for ($i = 1; $i <= $height; $i++) {
for ($j = 1; $j <= $width; $j++) {
$color_index = imagecolorat($im, $j - 1, $i - 1);
$color_tran = imagecolorsforindex($im, $color_index);
$back_text .= getimgchars($color_tran, $chars);
}
$back_text .= PHP_EOL;
}
file_put_contents('img.txt',$back_text);
- 效果图如下: