ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
>[success] # 图片转ASCII码图 * [案例图](http://www.degraeve.com/img2txt.php) * [手把手教你图片转ASCII码图](https://www.cnblogs.com/jelly7723/p/5657891.html) * [图片转字符](https://segmentfault.com/a/1190000007692741) ![](https://box.kancloud.cn/b577e6d90fa106b736db964948927712_896x428.png) ![](https://box.kancloud.cn/bd855ff2eadf838f37becc2a62f9d23a_919x525.jpg) ~~~php <?php function tochars($r, $g, $b, $px = 256, $char = "#ABCDEFGHIJKLMNOPQRSTUVWXYZ@$%??__ff--++~~'' ::.. `` ") { if ($px == 0) return ''; $len = mb_strlen($char); //灰度值 $gray = floor(($r + $g + $b) / 3); //将256个像素平均分配给字符 $unit = ceil($px / $len); //获取当前像素对应的字符 $index = floor($gray / $unit); if ($index >= $len) { $index = $len - 1; } return $char[(int)$index]; } function tosmallim($const = 100, $width, $height, $image) { if ($width > $const) { $times = floor($width / $const); $smwidth = $const; $smheight = floor($height / $times); $im = imagecreatetruecolor($smwidth, $smheight); imagecopyresampled($im, $image, 0, 0, 0, 0, $smwidth, $smheight, $width, $height); return [$im, $smwidth, $smheight]; } return [$image, $width, $height]; } $imname = 'http://images2015.cnblogs.com/blog/763758/201606/763758-20160612082543871-1901077809.png'; //返回一图像标识符,代表了从给定的文件名取得的图像 $image = ImageCreateFromPng($imname); //$im = ImageCreateFromJpeg($imname); $size = getimagesize($imname); $width = $size[0]; $height = $size[1]; list($image, $width, $height) = tosmallim(100, $width, $height, $image); $arr = []; for ($i = 0; $i < $height; $i++) { for ($j = 0; $j < $width; $j++) { $rgb = ImageColorat($image, $j, $i); $r = ($rgb >> 16) & 0xFF; $g = ($rgb >> 8) & 0xFF; $b = $rgb & 0xFF; $arr[] = floor(($r + $g + $b) / 3); } } $num = count(array_unique($arr)); $str = '<span style="font-size: 8pt; letter-spacing: 4px; line-height: 8pt; font-weight: bold;display: block; font-family: monospace; white-space: pre; margin: 1em 0;">'; for ($i = 0; $i < $height; $i++) { for ($j = 0; $j < $width; $j++) { $rgb = ImageColorat($image, $j, $i); $r = ($rgb >> 16) & 0xFF; $g = ($rgb >> 8) & 0xFF; $b = $rgb & 0xFF; $str .= tochars($r, $g, $b, $num); } $str .= '<br>'; } echo $str . '</span>'; ~~~