20,359
社区成员
发帖
与我相关
我的任务
分享
<?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);
$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>';
123220
034444442
04444444443 0
0 00 00 444444444442
00000 14444444444440 12331
0110 24444443344441 134444430 02
011 24444211013441 0244444443 1212342 0
00 14441111111441 23344444442 2444444441
00 0444333333344 24333321124 0444444444443
000 244300220142 14301100110 03444444444443
000002311111111 320110010 244444444444441
0144221000000 110011110 24400444 240 244444444444442
44444200 000 010000000 244224442340 044434444333340
244444203131 11000000 244444444440 23111112111240
144444424441 2210010 0000001110 111110111120
034444444441 133 00420 0000110 110011000000
144444444442 2234 204321 001100120 110000000010
24444444444422223413143221 01000 00000011110 000
244444444444432223232322221 00 023332222101120
34444444444444322233332212210 133322222222231
34444444444443122234422200220 233222222222221
3444444444343012222332220 01 0233222222222221
444444444430 12222232220 00 0232210122212221
44444444442 122222222210001 2322022220222221
44444444443 1222222222111130 23320122202222222 0
44444444444 12222222221 241 1331101000222222220 0
044444444444 22222222221 244420 1332222222222222222
34444444441 03333333320 244444420 2332222222222222222
24444444441 02222222341 2444444442 033332222222222022210
0 24444444441 0234433443 44444444442 1333322222222220 20000
244200 341 0223444441 244444444444 03333322222222330 00
2442 342 02223344421134444444444440 344444444444443
2442 342 0222223444444444444444443 344444444444444
2441 342 0222222444444444444444441 444444444444444
2441 242 022222234444444444444443 4444444444444440
2441 242 12222222344444444444443 4444444444444440 0
2441 242 12222222223444444444430 24444444444444442 0
014441000024420034332223441244444443100002444444444444444442
0000000022220000012220222222122222000122100000012222222222222222222000000
00000000000000000000000000000000000000000000000000000000000
145530
078888885
18888888887 0
1 00 00 788888888885
00010 18888888888880 24553
0221 48888887688882 278888870 03
121 48887521127883 0488888887 2324585 0
01 38873322222882 45788888884 4788888882
1 0888666666688 38667643247 0778888888885
010 488601440284 28511111120 06888888888886
011005632222223 641121120 588888888888883
0278542111111 321121120 47710777 370 488888888888883
78888311 010 021111110 488558874680 087877878665781
488888415262 21100010 488888888880 45223334221380
188888747883 3311021 0000002210 232221223340
078888888883 265 10750 0111121 211111111110
388888888883 3467 518641 012311231 210000000110
48888888888843545716375452 01100 01111112310 10
488888888888875456465654543 01 045555443212341
58888888888888645467755434530 355554554455552
68888888888885245467745401540 455544455444552
7888888888777124545664540 03 0555545445444542
788888888860 14545554541 10 1555421254435443
88888888885 245454545410111 4553044551444443
88888888886 2454545454312261 45531233314454443 0
88888888888 34545454542 483 355221200044444444 0
088888888887 34545454542 488741 3555445444445544444
57777777772 16666666630 488888740 4555555544554544444
47777777772 05555455672 4887777883 055555445444445034421
1 47777777773 0567766786 78887888883 3555555555555550 31110
477400 773 0557888872 588888888887 06555555555555560 11
4773 673 15456678752368888888888880 588887777888886
4773 673 1545545888888888888888886 688888888888887
4773 574 1545545788888888888777782 788888888888888
4773 574 154554557877788888887785 8888888888888880
4773 474 15455455588888888888886 8888888888888880 1
4772 475 25455455447888888888850 38888888888888884 1
28873000037840168655456882478888886200005888888888888888883
00000004444100001444134444324444400133320000002333333333333334444400000
000000000000000000000000000000000000000000000000000000000
BFHGEA
AJ######G
A#########J
B A A J##########G
A ABA C############ CFHGD
CDB F######JH####C CIKKKKKIA E
ACB F###JGDBBCI##E FKKKKKKKJ DEDFHKG A
AA D##KDDCCCCC##C EHJKKKKKKKF FKKKKKKKKC
B ##KHIIIIII## EKIIIHFDCEK AJKKKKKKKKKKH
BA F##IABFFAD#F CKGBBBBBBCA AIKKKKKKKKKKKH
BB GIDDDDDDDD IFBBDBBDA GKKKKKKKKKKKKKD
ACJ#GFDBBBBBB DCBBCCBCA EJJBAJJJ EJA FKKKKKKKKKKKKKE
J####EBA ABA ACBBBBBBA FKKGGKKKFIKA A#JKJJKJKIIHIKB
F####KEBHCHC CBB AB FKKKKKKKKKKA FHDCDEDFCCBE#
BK####JGJ##D EEBBADB ACCB CEDDDBDCDEFA
J#########E DIH BAJGA BBBBCA CCBBBCBBBBB
D##########E EFIK GAKHFB BDDBBCEB CBAAAAAAABCA
E###########FEGFHKBHDKGFGC ABBA BBBBBBCEB AA
F############JGFGIFIGIGFGGD AB AFGGGGGGECACEGB
G#############HFGGIJJHGFDGGDA DGGGGGGGGFGGGGC
H############HCFGFIJJFGFABGGA GGGGGGGGGGGGGGC
I#########JKIBDFGFGIIFGFA AD AGGGGGGGGGGGGGGD
J#########I BFGFGGHFGFA B BGGGFCBDGGFEGGFD
K#########G CFGFGFGFGFBABBB FGGEAFGGGBFGGFFE
##########I DFGFGFGFGFDBCCHB EGGEBCEEEBFGGGFFE A
##########K DFGFGFGFGFC F#E DGGCCBDAA FGGGFFFE
A##########J EFGFGFGFGFC FK#KFA EGGGGFGFGFGGGGFFFFF
HJJJJJJJJJD BIIIIIIIIE FKKKKKJF FGGGGGGGGGGGGGEFFFF
FJJJJJJJJJD AGGGGGGGIJC FKKJJJKKKE GGGGGGGGGGGGGGAEFFCB
B FJJJJJJJJJD AGHJJIIJKI JKKKKKKKKKE EGGGGGGGGGGGGGGA EBBB
FJJF JJE AGGJKKKKJD GKKKKKKKKKKJ AIHGGGGGGGGGGGHHA AB
FJJE IJE AGGGHIJKKGCEIKKKKKKKKKKKK H##KKKJJKKK###I
FJJE HJE BGGGGGHKKKKKKKKKKKKKKKKKI I#############K
FJJE HJF BGGGGGGJKKKKKKKKKKKJJJKKC K##############
FJJD GJF BGGGGGGHKKKJJKKKKKKKKKKG ###############
FJJD FJF BGGGGGGGHKKKKKKKKKKKKKI ###############A B
FJJD EJG CGGGGGGGGFJKKKKKKKKKKG EKK###########KKE A
CKKJD EK#F AIKIHGGGIKKCEJKKKKKKHC GKKKKKKKKKKKKKKKKKE
EFFFB BFFFBEFFFFEDEFFFFA BDEEDA CEEEEEEEEEEEEEEEEEEEA
$imname = 'http://images2015.cnblogs.com/blog/763758/201606/763758-20160612082543871-1901077809.png';
$im = imagecreatefromstring(file_get_contents($imname)); //加载图片
imagefilter($im, IMG_FILTER_GRAYSCALE); //转换成灰度图片
$dm = imagecreatetruecolor(imagesx($im)/10,imagesy($im)/10); //适当的缩小
imagecopyresampled($dm, $im, 0,0,0,0,imagesx($dm),imagesy($dm),imagesx($im),imagesy($im));//导入原图
ascii($dm); //产生字符画
//png($dm);
function png($im) {
header("Content-type: image/png");
imagepng($im);
}
function ascii($im) {
$ascii = " .`:-,;\"_~!^ir |/I=<>*l1t+j?v\)(Lf{7}JTcxz][unsYoFye2aVk3hZC4P5AqXpE%0Udb6KS9#HwG\$OgD8RQmB&NWM@";
$k = round(256/strlen($ascii),1);
$ascii = str_split($ascii);
echo '<xmp>';
for($y=0;$y<imagesy($im);$y++) {
for($x=0; $x<imagesx($im); $x++) {
$c = floor((256 - (imagecolorat($im,$x,$y) & 0xff))/ $k);
echo $ascii[$c];
}
echo PHP_EOL;
}
echo '</xmp>';
}
`
.+e5C[r :: ,
I9@@@@@MZ, `- `,`:`
` `` . =B@@@@@@@@S, ;~-
*-r^` r.w@@@@@@@@@@3 -.
/~ l| ?@@@@@@@@@@@M! `v25CT, .
~(7t` o@@@@@WSqN@@@f \KDDDDDK| : ^]
<fj` e@@@w37jtLK@@z iyDDDDDDDS_ .-7u}FPgh. "|
-I=` T@@$cJ()))f@@L YPSDDDDDDD2 a$gDDDDDD(,
_*_ !W@8EUUb6Ub@W_ nD%%KpecfY$` #$DDDDDDDDDP
!t|` o@M6|tYV|{Wy vDC+j+tt+Lr |UDDDDDDDDDDDE.
it*^!3Uc77{77}T` -d2t+{tt}I ... ... .. ZDDDDDDDDDDDDDJ
)wN3Y}tlttt1- :T(tt\?+\I Y$$tI$$9 u$ FDDDDDDDDDDDDDu
;w@@@M]t<;/tr |vttt+tt/ oDDC3DDOoED BGDS$gHDEd5KQt
.o@@@@QYt5vXf .\jlr!It^ oDDDDDDDDDD aP7\TzTov(+uNi
?Q@@@@wVG@MJ ][?> 7* "^^^^^/\L?i` vx{}{t7?xzF|
^K@@@@@@@@@x .7UA-l GCI ~ttt+f=. :f?t+j?tttt+^
c@@@@@@@@@@u :]a0$-Z=Dq2+ -r*7xttv]t- ,f?/||||||*?
s@@@@@@@@@@@y[ZaPO+XJOCahv |?tI~,-;i*tt11+\zj^` ._=I, .;. :
a@@@@@@@@@@@@9ZaZ%ydhbZahVJ. *, .|V4443kVnL<vzVl :_.:-
4@@@@@@@@@@@@MpaZk6S9PZaxVhc ` -. J444hkkkkahZCCv . `
.` E@@@@@@@@@@@@P)aZaEHHaZa|l3V .``-`.:V44Ckkkkkkkkk3)
,-,_ K@@@@@@@@@SOK*{aZaZbUaZaI IT..`-:. rZ44kkkkVkkkkkV{.
.,.;, $@@@@@@@@@0r, jaZaZCPaZa> `*i:. *k4hV(17kkezkkVT`
-. Q@@@@@@@@@Z \aZaZaZaZaj|1tj y4Z[IFkkk1ykkVVz-
.M@@@@@@@@@b {aZaZaZaZaTjv\ql Y4Cnl)n]u+2kkVaau; |;
"@@@@@@@@@@8 caZaZaZaZa),:.Fmz` c44)f17IIiykkVVVaY_ ~.
@@@@@@@MWN#` uaZaZaZaZa\ oDmOy<. z44kVakVVakkk3VaaaF;
;A$GwH#####{ ldbddUdUU]! oDDDDQ#Y^ y44ZkkkkkkkkkhsVVVY;
e#########} hkhhVhC0wL 2DgGw$ODgu. !444Ckkkkkkkkkk [a2(1-
,l e#########T |hpH#6EGDU` -9DDg$gDDDD] z44443kkkkkkkkk ,n1tti
e##2i~,-S#z Ih39DDDDG{ `3DDDDDDDDDDw`/d5444hkkkkkk3PX -.=t"
e##n d#] <hkhX0#DOZfzbDDDDDDDDDDDD! A@&Rg$w#$DQN@@d `
e##] p#n *hkhhVADDDDDDDDDDDDDDDDDb. d@@@@@@&@@@@@@O
e##z P#Y lhkhhVhHDDDDDDDDDDg$G$OD( O@@@@@@&@@@@@@W.
e##c k#y thkhhVhAODOHGDDDDDDg$OD4. .W@@@@@@&@@@@@@@!
e##J y#e jhkhhVhhAgDDDDDDDDDDDDE, "N@@@@@@&@@@@@@@I >
y##7``:-Y#h,,,(hkhhVhhVySDDDDDDDDDDC^;;;nD8m&W@@&@@W&m8Ds =.
`:,;"__v8RHT!!!!u$We!<dDb5hVZdR8LY9DDDDDgp(!!!iCDDDDDDDQRQDDDDDDD]";,-`
._!!!!!!rYyyo1!!!!jyyytuyyyy[7YyyyY ^+Tu]{=!!!!!\uuuuuuuuuuuuuusYYYs|!!!!_.
.:-,;"_~~!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!~~_"",-:.
..``::----,,,,,;;;;;;;""""""";;;;;;;,,,,,----::``..
for($c=32; $c<127; $c++)
{
$r[chr($c)] = 0;
$im = imagecreate(14,14);
$bg = imagecolorallocate($im, 0, 0, 0);
$textcolor = imagecolorallocate($im, 255, 255, 255);
imagestring($im, 5, 0, 0, chr($c),$textcolor);
for($y=0;$y<14;$y++)
for($x=0;$x<14;$x++)
if( imagecolorat($im, $x,$y) == $textcolor) $r[chr($c)]++;
}
asort($r);
print_r($r);
Array
(
[ ] => 0
[.] => 8
[-] => 8
[`] => 8
[_] => 8
['] => 8
[,] => 9
[^] => 12
["] => 12
[~] => 16
[:] => 16
[=] => 16
[;] => 17
[!] => 18
[<] => 20
[|] => 20
[/] => 20
[+] => 20
[>] => 20
[\] => 20
[r] => 21
- => 21
- [z] => 22
[{] => 22
[}] => 22
[i] => 23
[l] => 23
[(] => 24
[c] => 24
[)] => 24
[L] => 25
[?] => 25
[j] => 25
[J] => 26
[T] => 26
[v] => 26
[t] => 26
[7] => 26
[]] => 26
[[] => 26
[x] => 26
[1] => 27
[I] => 28
[o] => 28
[Y] => 28
[s] => 30
[Z] => 30
[f] => 30
[F] => 30
[n] => 30
[u] => 30
[e] => 31
[3] => 31
[2] => 32
[C] => 32
[y] => 33
[a] => 33
[q] => 34
[p] => 34
[E] => 34
[k] => 34
[4] => 35
[0] => 36
[g] => 36
[S] => 36
[P] => 36
[X] => 36
[V] => 36
[h] => 36
[%] => 36
[G] => 37
[5] => 37
[#] => 38
[w] => 38
[b] => 38
[d] => 38
[6] => 39
[9] => 39
[O] => 40
[8] => 40
[U] => 40
[K] => 40
[m] => 41
[$] => 41
[A] => 42
[&] => 43
[H] => 44
[D] => 44
[Q] => 45
[@] => 46
[B] => 46
[R] => 47
[W] => 52
[M] => 52
[N] => 53
)