>[success] # 圖片轉ASCII碼圖
* [案例圖](http://www.degraeve.com/img2txt.php)
* [手把手教你圖片轉ASCII碼圖](https://www.cnblogs.com/jelly7723/p/5657891.html)
* [圖片轉字符](https://segmentfault.com/a/1190000007692741)


~~~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>';
~~~
- 技術擴展閱讀
- 第一章
- 第一節 PHP與Golang 項目案例 - 留言板
- 第二節 PHP 實現日歷功能
- 第三節 ThinkPHP 自定義分頁模板
- 第四節 WebUpload 文件上傳
- 第五節 UEditor 文本編輯器
- 第六節 ThinkPHP 驗證碼
- 第七節 百度地圖
- 第八節 PHP 接口調試工具 SocketLog
- 第九節 PHP 跟蹤調試代碼 XDebug
- 第十節 PHPExcel 表格導入和導出
- 第二章
- 十一節 實戰筆記 - Kafka 篇
- 十二節 實戰筆記 - Redis 篇
- 十三節 實戰筆記 - MySQL 篇
- 十四節 圖片轉ASCII碼圖
- 十六節 Python 視頻轉代碼視頻
- 源代碼
- 代碼2
- 十七節 GRPC PHP客戶端