成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

圖片轉(zhuǎn)字符

shiguibiao / 3000人閱讀

摘要:處理圖片我比較熟悉,剛好有庫(kù)可以處理圖片,簡(jiǎn)直不要太合適對(duì)圖片的處理也比較簡(jiǎn)單,讀取圖片,灰度處理,獲取每個(gè)像素點(diǎn)的灰度值,將灰度值的深淺轉(zhuǎn)換為字符。

引言

前幾天看到一幅用字符(準(zhǔn)確的說(shuō)是ascii碼)繪制的doge圖像,覺(jué)得挺有意思


 * @Date
 * @Desc
 */

將他放到代碼的注釋部分,加上了Doge bless you! No bug!的字樣,放在了代碼的注釋部分(新建腳本的時(shí)候自動(dòng)添加),同事看到了覺(jué)得挺有意思,問(wèn)我怎么搞得。
后來(lái)我仔細(xì)看了下這幅圖,分析了下,都是用ascii字符繪制的,通過(guò)ascii字符的占用像素多少表現(xiàn)圖片的深淺,想通了原理決定自己實(shí)現(xiàn)一個(gè)圖片轉(zhuǎn)字符的工具。

處理圖片

我比較熟悉php,剛好php有GD庫(kù)可以處理圖片,簡(jiǎn)直不要太合適~

對(duì)圖片的處理也比較簡(jiǎn)單,讀取圖片,灰度處理,獲取每個(gè)像素點(diǎn)的灰度值,將灰度值的深淺轉(zhuǎn)換為ascii字符。

都去圖片之前,首先要做的就是統(tǒng)一接口,實(shí)現(xiàn)讀取多重類(lèi)型的圖片,php的GD庫(kù)中,沒(méi)有直接提供相關(guān)的函數(shù),造個(gè)小輪子:

class ImageCreate
{
    // 要處理的目標(biāo),可能是文件
    protected $target = "";
    // 文件的類(lèi)型
    protected $type = 0;
    protected $supportTypes = [
        1 => "imagecreatefromgif",  // gif
        2 => "imagecreatefromjpeg",  // jpg
        3 => "imagecreatefrompng",  // png
        6 => "imagecreatefrombmp",  // bmp
    ];
    public function __construct($target, $type = 0)
    {
        $this->target = $target;
        $this->type = $type;
    }
    public function create()
    {
        $type = $this->getType();
        if (!isset($this->supportTypes[$type])) {
            throw Exception("Type of image not support. Abstract[type[{$this->type}]]");
        }
        $func = $this->supportTypes[$type];
        if (method_exists($this, $func)) {
            $ret = $this->$func();
        } else {
            $ret = $func($this->target);
        }
        return $ret;
    }
    protected function getType()
    {
        if (!$this->type) {
            $this->type = exif_imagetype($this->target);
        }
        return $this->type;
    }
}

使用時(shí)候不用關(guān)心圖片類(lèi)型,類(lèi)庫(kù)內(nèi)部幫你做了處理,(new ImageCreate($image))->create()就獲取到了圖片resource句柄,供下一步使用。

php讀取像素點(diǎn)信息用下面的公式,其中$x,$y分別表示像素點(diǎn)的位置。

$rgb = imagecolorat($this->resourceImage, $x, $y);
$r = ($rgb >> 16) & 0xFF;
$g = ($rgb >> 8) & 0xFF;
$b = $rgb & 0xFF;

像素灰度化,關(guān)于灰度化可以參考百度百科的解釋

灰度化,在RGB模型中,如果R=G=B時(shí),則彩色表示一種灰度顏色,其中R=G=B的值叫灰度值,因此,灰度圖像每個(gè)像素只需一個(gè)字節(jié)存放灰度值(又稱強(qiáng)度值、亮度值),灰度范圍為0-255。一般有以下四種方法對(duì)彩色圖像進(jìn)行灰度化。

一般有以下四種方法對(duì)彩色圖像進(jìn)行灰度化處理:分量法 最大值法平均值法加權(quán)平均法

這里使用了加權(quán)平均法

根據(jù)重要性及其它指標(biāo),將三個(gè)分量以不同的權(quán)值進(jìn)行加權(quán)平均。由于人眼對(duì)綠色的敏感最高,對(duì)藍(lán)色敏感最低,因此,按下式對(duì)RGB三分量進(jìn)行加權(quán)平均能得到較合理的灰度圖像。

處理公式 intval($r 0.228 + $g 0.587 + $b * 0.114)

更詳細(xì)的內(nèi)容這里就不討論了,有興趣的可以自行查閱資料,這里主要使用了加權(quán)平均法求灰度值

這里插敘下,當(dāng)我完成開(kāi)發(fā)后,發(fā)現(xiàn),稍微大點(diǎn)的圖片,輸出信息很容易就換行了,看起來(lái)一團(tuán)糟,這里還要做一個(gè)比例縮放的功能,沿著寬高方向做不同的縮放,將多個(gè)像素點(diǎn)合并為1個(gè),合并的時(shí)候簡(jiǎn)單的取加權(quán)平均值。

gray = (gray0 + gray1 + ... + grayn)/n;
使用

這里開(kāi)發(fā)已經(jīng)基本完成,已經(jīng)放到github,發(fā)布到composer,想看看效果的只需要通過(guò)composer命令composer require aizuyan/img2ascii安裝就可。

安裝完成之后,會(huì)有vendor/bin/img2ascii可執(zhí)行文件,向下面這樣執(zhí)行他就可以了,第一個(gè)命令是要處理的圖片,-x是寬度方向像素縮小比例,-y是高度方向縮小比例(由于編輯器中ascii字符顯示的時(shí)候一般高度是寬度的兩倍,所以縮放的時(shí)候剛好反過(guò)來(lái))

?  bin img2ascii ~/Desktop/abm.jpg -x 10 -y 20
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::rrii: s:::::::::::::::::::::::
:::::::::::::::::::::::::::iisMN8B99r:::::::::::::::::::::::
:::::::::::::::::::::::::: iq0B8M0000r::::::::::::::::::::::
::::::::::::::::::::::::: @B8B09BB0@0B :::::::::::::::::::::
:::::::::::::::::::::::::r@BBNB08880B0v:::::::::::::::::::::
:::::::::::::::::::::::ir000B8NB888@B@Noi:::::::::::::::::::
::::::::::::::::::::::i00000BB8@B@@808BBsni:::::::::::::::::
:::::::::::::::::::::: 0B@B00no7vr7ii7rntipi::::::::::::::::
::::::::::::::::::::::tBB9mmoi;i i ii:;7s :i::::::::::::::::
:::::::::::::::::::::i000Nnsirvir i    isi::::::::::::::::::
:::::::::::::::::::::i0B0nmmtii  i rir:ip7::::::::::::::::::
::::::::::::::::::::7in8npstrpsrqpiisqtorr :::::::::::::::::
::::::::::::::::::::vvp9mtvppoqirs ;i7ovivi:::::::::::::::::
:::::::::::::::::::: orq0ttr  irr7;ii  :rvi:::::::::::::::::
:::::::::::::::::::::ivr9tmi;i7oitr iitqvi::::::::::::::::::
:::::::::::::::::::::: imnpsrt7soprri7isqr::::::::::::::::::
::::::::::::::::::::::: n9tsisqi :i :rvr7:::::::::::::::::::
::::::::::::::::::::::: qq9tr7iompvvoi7i::::::::::::::::::::
:::::::::::::::::::::::ioipmmqpiiiiri ::::::::::::::::::::::
::::::::::::::::::::i rrvrirsrnr7viir7ii::::::::::::::::::::
::::::::::: ,  ,. iv: ;riiiviirorrtrviirii ,,, :::::::::::::
::::::::::ii.     iiii7iiiriri77r7ivri;i;:., . .r:::::::::::
::::::iri vv .  .. :rr7;i :iiii:iiiviirir, .  ..v;: i ::::::
:::i:iv;:rr  .  ... i i rr::;i r:r riiii: ... . :rr; i;: :::
:: v7v  :::r. .. .   :riiiiviiiiii:::iii. .  . . r:ir:i ri::
::smtqiirr :.   .......,iii;r; iiriii:  .   ..  :iriv;irii::
:rmppir r;ri.,   ...  ..   . , , ,  . ..  . .  ,,7i;ir irr :
:instiv: r  .   i  :, , ,,     .  .  . ....  ,  .rrvi:i  vr:
:smNniv isp    rq77i    :::,,:  :,::,,,, iipsr  .viv;ii r7;:

下面是幾張轉(zhuǎn)換先后圖片的效果。

n00nnNM8@8M99@B8088B8B0NsnMMMmm00@8B8B@BB0M9MmmmN080Nn9MB00@@B08noonmmm
9snM90NM@B900089B08B@B8rtnn0NMnm99M9nN0N0NN0nNmmN@0B8N990@000sqtssooots
M8B9n889M@80M08npm0NMmttiiii:ii : ,     :i   i i7mM08MM09MnpstpsspoqqnN
m00NN0pmnM0pttonmq7  :  .   ....   .       , ,,, :i iss90morttqoom9N9nr
tmnnsN7qoNBMmovi , .   .   .   . ... , i:: ::: :: ,,  :iirpopnMBN9Mnnnn
ms99p7iqNNnqr: .  . ..... . . . .....  iir  iiiii:i::: ,, ir7mmnrnnmmMM
9M000mmmnq:   .  ....  . . ... ..    , :smvii;iirrrviiiii     :irrirm8B
0BB00@Bmr  .......  ..   . .  .  . . , :i7s:v7i7rrivri77ri;i , ,,   iip
8B00B08s . . .    . ...   .    .     ,,,:ir7iivqpqqor7ivv7ir :    ::::i
B8B8B0s   . ..  ... .. . . ...     ,  ,,,: iiotistpttsrrqssii::i   i  i
0BBBBo .,   .... . ....  .   ,    , ,    , i oooorstnsoprosoviivir7 :rv
8@8Mi,. ..  ..    .   . ,  , ,  , ,       :  iqsrtnqotppsmsoporpttrpqtq
MMm  ..,. ... .. .  .  ,      , ,     ,   ii imnmnnmrrsmnnmmmmmmmmmmrnB
Mmr .., .....   ,,, ,, ,,         ....    iii7n9nmtnrnmnnm9M9909MNm90BB
mp:. .,    ..   ,,  ,,   , , : ,,  ,     ,:ivtMM9nnnmnnm00000N09099888@
0p,.   . , :,, , ,,   ,     i  i:::: :: :: ivtM00NNnmMM90N9N0N9NMB@B@00
Ns . , :: isri     , ,   : rr7irriivi:irri iroM0MN9N0NN9000009N98@8@0B@
0mi  :iii:ivr:,   ..  ..  ivvi::istos7iri  irq0088008088NMMMM9M8@80880@
MNpi:iri:i:: .. .      .       iii i  i::: iis0000090@000M0nN08B0B0@808
09MN7: ;7         ,,.     . ,,: ::  ::: ::: rqn@B@80NN90nttq000B800080B
N0M0M7rri:..: i:ivir ,,,,   ,,,::: ,,  : :: irtnM8009ti7iiis0B8B@8BB0@B
NN0MN99mm: :nmnssnnnrr:    , ,, :,,  , :::i    iivivi:;iririsNB@008B0BB
NMN0mmrtp  i@B@8BB9Npr:      , , ,   ::::: ii i     :rr iiirr0nn@@B0@0M
9mmmpt7i: . p80B@Nnqi: ,,,,,:   :::::::::ii   ii ii:i; iiiirsmm00nmMMm0
09mmmnti  , oN0@Nmsii: ::::,    :  ::::ii ii  i i :iiiiririrtmmnnnnssnN
N9N0Mrqq:,  rpmpopoi :: ::::::::: : :iiiiiii    ::ir:ri irvv7tnnn09oq7i
0NMNn99rr :riqssrpsrr  ::   ::::: : iii   ii r iir   :;iri:iv7ipn99opsi
B@Mm9990mi:iiiiriiviii;ii iii:ii:  irri r ir  rr: :riri:ri: :iiiiioiii7
qssptrn9nnnnosir: iiiiii:: :ri   rii  r: ii: riii  ii  ir:iiirvvrirvi:;
: r; :i: ri r: i rii :r : iir    ri  :;iriri   ii      i rrr ;;:  :riii
rvriivri7rviviviiiiiv;   ir:i: :: :ir :rr  i    ii   i     ii:i;; ;i:;i
i;ii7iiiriiiviiiiii7ii  ii  : rir i iiiiii ii i    ii iiiii   r  r:iv:i
iviiiiiiirrviiii t v;rr :  i i  i iiii   iii  i   i         iiir:;;iir 

再來(lái)張美女圖片(不知道有沒(méi)有侵權(quán),侵權(quán)刪)

: iiii:iiiiiqsmM9M@9qtossrntNMmnnM900B@BBB0@8BB@0@BMprpontpp
 :i r :iirrrm0@8NMBnttptponm0Mnmmnn@B880@@888BB8BBB8nsqorpor
:ri:i r:iiiisqnmno9mopsqsqonnnnnnmN8088808B8B@B080B8svi7tsqs
iii ii ir:;7tmnMMmMmotr7rvrmM0B88Mn9B8B@88@8@B@8B@B8tppsnnmr
   i iii:rirqspmrrmntqppptoNnM9ioqnN08B0888BBB08B0MNsiiiirr7
::::::i  i:isnMM0n9nstipM0BMri ,  ,  rNB000B88@080B@ppsrorqo
::: ::: iii ittqrtnnstpBB8ni,  ... ,, i9880800080nmmiriivrii
:        i :vnn00mMnptM808i  ,   .. ,: t9NMB0000BB80prvrv7sv
, ,,  ,:i i irqsotqnps80Bq ,,,,::   ::iiM000088BN0mntv7i7vri
 ,   ,,:::: imn0Mmmtsnrrn7,   r    , vii8NN8B88808NMiiivivrr
 ,, ,,,:::: iv7orqrNstr i , .      ,   :09B000809MMNr77i7iii
,,  ,   ::: 7nmn9rnmqoqi ,,, ... , : . i888@0@0B00mnri;rr;7i
,   ,  , ::  iiooqn0rm0Mii:,,,.. ,, : :t00@0N0080NMNpiivii v
, ,,     : :vnmn9snmpm98Mmri,, .   :  iM00BBB88B0ntpv ir :r 
 ,,    , :::rrpsopmMpM0@08ri7;: ..   vB9nm0BN808M0mmtvivivi 
          :::mnmntm9rsq0r;::  iii;rtB80B0npm88B8mrooi;  : rr
,           iiitpomNni    . ...  rv8000900B0N8000009svi:;ivr
,   ,, ,    rmmmmqnmm0N: . ..   ,: 008MmB8B0N88Mmrporv;r:rr;
      , , , iiqtsppmt;  : ....   ,, iqnp008008800mmqi;   ;vi
  ,       , :qnii,..,  ,,, ,,....   ,:rr9B00nimNnmrtsiiiii r
.    ..      ri   ...  ..   ,,.. .  ,, 7n08BMi Bmmprvrr :;i;
   .. . , ,  p,,..  .....    , . .  ..irinB0Bsio09Nmpii;;;ir
.. . .. ,  , mi,   . ... .    ,...  ..:n9rvq@8pimtsrr r::::i
..  ...,, ,, tpi,,. ..  . ..  .  ... ..i0,   p@nn00Mntviirir
.  .. .  , ,in0ni ,, .. ...    ,, .. ,. ii  ::vm8nsrii r;:v 
  .. . .  ,  rtmmi ,,.....  . .   .  .  ...    ,7Bnmp7v: iir
.  ...  ,  , mMM9m i: ..  ....   ,..   ,.... .   snoii  r:r 
.......  ,  iimnmmq    , ..    ., . .    .    ..,rnrrii:::i:
.   . . ,,,  m00Mm0i::i:,,  ..  . .    ,,...   .,qmmt7i  rri
..   .  ,,, ip999n90i   ,:,,,,. .. ... . ..   . imqp7;ir:ir 
. .. ...  , iq990n99r,. ..  :       . . , ..    0imMmsirvit7
  .... ., ,,ipN0M0900i   ..  ,i:   , ..     .  7v:iii rr rvi
     ...     p0M9mMN09 . .   , ,:: ,,,,, ,.  . ii,rBMoq7ivtr
 . ....., ,, s08009@0No,.   .. . ,, :::   .   ,i:,:rir :;ivi
 ....    , ,ipNMNn0M9N9 .    ...   .  ,, . . . i   :mviir:ir
... . ..,,, ir0NM9N@@88i .      . .  ...  .   .:    7iir ii:
 ...  .    , in99n9NN09v ..       .  . .. . .:i,, , pii rivr
..      , , ioBB80M0@BN,.. . .. .       . .  ,i,   io7iiiiii
   .. .  , , iNNMnNMNN: .    ...  .  ... . .  ,   ,isrr ;iri
 ....  .   , t088N08B;.  ....  .   .  ...  .  ,   :tmrq7iro7
 ...  . ,,   v9NNMMBn,.... ..  . ......     , .. ,:oi: ;riv:
..  .  . ,  ii000999 ,. ..   .      .  ..    ,..  immssvqvpi
 ..   ..  ,,:i009N9M,  ..  ..       .. .... ,   ,,rq7: irioi
. .  . .,,  :iN9NN9r.        .   .  .  ..   .., , sm9priirri
...  .  ,    v80B0v    .  ..  .  ..    ..  ..   , r7v:ririqi
.  . .. ,,,, r0MM7 ,.... ...     .  :::::  ,      7oprsviir 
.. ..  .,, , :00B  . . .     ...      ,  ,.    , ,iiir iirii
 , .... ,,,,::09i,,.  .  .   . . : ,     , ,, ,   ::irri ;r:
 ,, .  .   ,  qs  .. . .  .        , ::   ::: :    : iivi7p7
,  ,,  .   ,  Nr       .  .. . .  , :: :: : : , ., vi:iir ii
  , , , , ,,: 0i,..   . .. .   ,   :::  ::: : ...,:t7v7irsp7
,  ,    ,,  :rmv  ....     .   ., ,,, ,, ....  . . po7rriior
 ,,    ,,   ::ir    ,     ..    .  .      . .. .   rnppptspr
  ,, ,  , :::: i.,....      . .   . ... .... .  ..  iiirivsq

是不是還挺有意思的,下面是

github地址 github-img2ascii

composer地址 composer-img2ascii

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/22133.html

相關(guān)文章

  • python 圖片在線轉(zhuǎn)字符畫(huà)預(yù)覽

    摘要:文章鏈接關(guān)于圖片轉(zhuǎn)字符畫(huà),相信大家都不陌生,經(jīng)常出現(xiàn)在個(gè)超有趣的項(xiàng)目中。今天我也來(lái)實(shí)踐這個(gè)有趣的項(xiàng)目,更進(jìn)一步的是把這個(gè)功能做成一個(gè)在線的網(wǎng)站,直接上傳圖片生成字符畫(huà),在線預(yù)覽可以讓更多的人來(lái)體驗(yàn)。至此,生成字符畫(huà)的腳本完成了。 文章鏈接:https://mp.weixin.qq.com/s/yiFOmljhyalE8ssAgwo6Jw 關(guān)于python圖片轉(zhuǎn)字符畫(huà),相信大家都不陌生...

    CarterLi 評(píng)論0 收藏0
  • 圖片轉(zhuǎn)ascii字符

    摘要:以上,我們完成了的初步認(rèn)識(shí)擴(kuò)展使用做反轉(zhuǎn)圖首先反轉(zhuǎn)的意思是指,把每個(gè)像素點(diǎn)的每個(gè)值都與相減的值不改變,減完之后的值再次組成圖片,此時(shí)得到的新圖片就是我們的反轉(zhuǎn)圖片。第二步轉(zhuǎn)灰度圖或是,又稱灰階圖。用灰度表示的圖像稱作灰度圖。 效果圖 showImg(https://segmentfault.com/img/remote/1460000008704923?w=1813&h=845); 基...

    SnaiLiu 評(píng)論0 收藏0
  • 圖片轉(zhuǎn)ascii字符

    摘要:以上,我們完成了的初步認(rèn)識(shí)擴(kuò)展使用做反轉(zhuǎn)圖首先反轉(zhuǎn)的意思是指,把每個(gè)像素點(diǎn)的每個(gè)值都與相減的值不改變,減完之后的值再次組成圖片,此時(shí)得到的新圖片就是我們的反轉(zhuǎn)圖片。第二步轉(zhuǎn)灰度圖或是,又稱灰階圖。用灰度表示的圖像稱作灰度圖。 效果圖 showImg(https://segmentfault.com/img/remote/1460000008704923?w=1813&h=845); 基...

    wing324 評(píng)論0 收藏0
  • 圖片轉(zhuǎn)ascii字符

    摘要:以上,我們完成了的初步認(rèn)識(shí)擴(kuò)展使用做反轉(zhuǎn)圖首先反轉(zhuǎn)的意思是指,把每個(gè)像素點(diǎn)的每個(gè)值都與相減的值不改變,減完之后的值再次組成圖片,此時(shí)得到的新圖片就是我們的反轉(zhuǎn)圖片。第二步轉(zhuǎn)灰度圖或是,又稱灰階圖。用灰度表示的圖像稱作灰度圖。 效果圖 showImg(https://segmentfault.com/img/remote/1460000008704923?w=1813&h=845); 基...

    0xE7A38A 評(píng)論0 收藏0
  • 用純前端的方式來(lái)實(shí)現(xiàn)圖片轉(zhuǎn)字符畫(huà)

    摘要:最近花了幾天時(shí)間,做了一個(gè)圖片轉(zhuǎn)字符畫(huà)的工具,一開(kāi)始想做成用服務(wù)器來(lái)生成圖像的形式,但是后來(lái)發(fā)現(xiàn)可以不依賴服務(wù)器生成圖片,順便還能把項(xiàng)目托管到上,因此就把項(xiàng)目做成了純前端的形式。 最近花了幾天時(shí)間,做了一個(gè)圖片轉(zhuǎn)字符畫(huà)的工具,一開(kāi)始想做成用服務(wù)器來(lái)生成圖像的形式,但是后來(lái)發(fā)現(xiàn)可以不依賴服務(wù)器生成圖片,順便還能把項(xiàng)目托管到 Github Pages 上,因此就把項(xiàng)目做成了純前端的形式。 ...

    NikoManiac 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<