圖片轉字元

来源:http://www.cnblogs.com/iforever/archive/2016/12/05/6132609.html
-Advertisement-
Play Games

圖片轉字元格式 引言 前幾天看到一幅用字元(準確的說是ascii碼)繪製的doge圖像,覺得挺有意思 將他放到代碼的註釋部分,加上了 的字樣,放在了代碼的註釋部分(新建腳本的時候自動添加),同事看到了覺得挺有意思,問我怎麼搞得。 後來我仔細看了下這幅圖,分析了下,都是用ascii字元繪製的,通過as ...


圖片轉字元格式

引言

前幾天看到一幅用字元(準確的說是ascii碼)繪製的doge圖像,覺得挺有意思

<?php
/**
 *                       ::                              ::
 *                     :;J7, :,                        ::;7:
 *                     ,ivYi, ,                       ;LLLFS:
 *                     :iv7Yi                       :7ri;j5PL
 *                    ,:ivYLvr                    ,ivrrirrY2X,
 *                    :;[email protected]:                :ivu@kexianli.
 *                   :iL7::,:::iiirii:ii;::::,,irvF7rvvLujL7ur
 *                  ri::,:,::i:iiiiiii:i:irrv177JX7rYXqZEkvv17
 *               ;i:, , ::::iirrririi:i:::iiir2XXvii;L8OGJr71i
 *             :,, ,,:   ,::[email protected]:i:::j1jri7ZBOS7ivv,
 *                ,::,    ::rv77iiiriii:iii:i::,[email protected]
 *            ,,      ,, ,:ir7ir::,:::i;ir:::i:i::rSGGYri712:
 *          :::  ,v7r:: ::rrv77:, ,, ,:i7rrii:::::, ir7ri7Lri
 *         ,     2OBBOi,iiir;r::        ,irriiii::,, ,iv7Luur:
 *       ,,     i78MBBi,:,:::,:,  :7FSL: ,iriii:::i::,,:rLqXv::
 *       :      iuMMP: :,:::,:ii;2GY7OBB0viiii:i:iii:i:::iJqL;::
 *      ,     ::::i   ,,,,, ::LuBBu BBBBBErii:i:i:i:i:i:i:r77ii
 *     ,       :       , ,,:::rruBZ1MBBqi, :,,,:::,::::::iiriri:
 *    ,               ,,,,::::i:  @arqiao.       ,:,, ,:::ii;i7:
 *   :,       rjujLYLi   ,,:::::,:::::::::,,   ,:i,:,,,,,::i:iii
 *   ::      BBBBBBBBB0,    ,,::: , ,:::::: ,      ,,,, ,,:::::::
 *   i,  ,  ,8BMMBBBBBBi     ,,:,,     ,,, , ,   , , , :,::ii::i::
 *   :      iZMOMOMBBM2::::::::::,,,,     ,,,,,,:,,,::::i:irr:i:::,
 *   i   ,,:;u0MBMOG1L:::i::::::  ,,,::,   ,,, ::::::i:i:iirii:i:i:
 *   :    ,iuUuuXUkFu7i:iii:i:::, :,:,: ::::::::i:i:::::iirr7iiri::
 *   :     :[email protected]:::::, ,:ii:::::::i:::::i::,::::iirrriiiri::,
 *    :      5BMBBBBBBSr:,::rv2kuii:::iii::,:i:,, , ,,:,:i@petermu.,
 *         , :r50EZ8MBBBBGOBBBZP7::::i::,:::::,: :,:,::i;rrririiii::
 *             :jujYY7LS0ujJL7r::,::i::,::::::::::::::iirirrrrrrr:ii:
 *          ,:  :@kevensun.:,:,,,::::i:i:::::,,::::::iir;ii;7v77;ii;i,
 *          ,,,     ,,:,::::::i:iiiii:i::::,, ::::[email protected];7:i,
 *       , , ,,,:,,::::::::iiiiiiiiii:,:,:::::::::iiir;ri7vL77rrirri::
 *        :,, , ::::::::i:::i:::i:i::,,,,,:,::i:i:::iir;@Secbone.ii:::
 *
 * 
 *          Doge bless you!
 *          No bug!
 *
 * @Author 燕睿濤<[email protected]>
 * @Date
 * @Desc
 */

將他放到代碼的註釋部分,加上了Doge bless you! No bug!的字樣,放在了代碼的註釋部分(新建腳本的時候自動添加),同事看到了覺得挺有意思,問我怎麼搞得。
後來我仔細看了下這幅圖,分析了下,都是用ascii字元繪製的,通過ascii字元的占用像素多少表現圖片的深淺,想通了原理決定自己實現一個圖片轉字元的工具。

處理圖片

我比較熟悉php,剛好php有GD庫可以處理圖片,簡直不要太合適~

對圖片的處理也比較簡單,讀取圖片,灰度處理,獲取每個像素點的灰度值,將灰度值的深淺轉換為ascii字元。

都去圖片之前,首先要做的就是統一介面,實現讀取多重類型的圖片,php的GD庫中,沒有直接提供相關的函數,造個小輪子:

class ImageCreate
{
    // 要處理的目標,可能是文件
    protected $target = "";
    // 文件的類型
    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;
    }
}

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

php讀取像素點信息用下麵的公式,其中$x,$y分別表示像素點的位置。

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

像素灰度化,關於灰度化可以參考百度百科的解釋

灰度化,在RGB模型中,如果R=G=B時,則彩色表示一種灰度顏色,其中R=G=B的值叫灰度值,因此,灰度圖像每個像素只需一個位元組存放灰度值(又稱強度值、亮度值),灰度範圍為0-255。一般有以下四種方法對彩色圖像進行灰度化。

一般有以下四種方法對彩色圖像進行灰度化處理:分量法 最大值法平均值法加權平均法

這裡使用了加權平均法

根據重要性及其它指標,將三個分量以不同的權值進行加權平均。由於人眼對綠色的敏感最高,對藍色敏感最低,因此,按下式對RGB三分量進行加權平均能得到較合理的灰度圖像。

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

更詳細的內容這裡就不討論了,有興趣的可以自行查閱資料,這裡主要使用了加權平均法求灰度值

這裡插敘下,當我完成開發後,發現,稍微大點的圖片,輸出信息很容易就換行了,看起來一團糟,這裡還要做一個比例縮放的功能,沿著寬高方向做不同的縮放,將多個像素點合併為1個,合併的時候簡單的取加權平均值。

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

使用

這裡開發已經基本完成,已經放到github,發佈到composer,想看看效果的只需要通過composer命令composer require aizuyan/img2ascii安裝就可。

安裝完成之後,會有vendor/bin/img2ascii可執行文件,向下麵這樣執行他就可以了,第一個命令是要處理的圖片,-x是寬度方向像素縮小比例,-y是高度方向縮小比例(由於編輯器中ascii字元顯示的時候一般高度是寬度的兩倍,所以縮放的時候剛好反過來)

➜  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;:

下麵是幾張轉換先後圖片的效果。


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 

再來張美女圖片(不知道有沒有侵權,侵權刪)


: 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][https://github.com/aizuyan/img2ascii]
composer地址 [composer-img2ascii][https://packagist.org/packages/aizuyan/img2ascii]



您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 用菜鳥的思維學習演算法 -- 馬桶排序、冒泡排序和快速排序 【博主】反骨仔 【來源】http://www.cnblogs.com/liqingwen/p/4994261.html 馬桶排序 一、場景:期末考試完了,老師要將同學們的分數從高到低排序。假設班上有 5 名同學,分別考了 5 分、3 分、5 ...
  • 很多人認為關閉應用程式應該很簡單,例如WindowsForm里一個Application.Exit();方法就可以解決問題,但在WPF裡面可別濫用,因為WPF里Application類沒有該方法,倒是有一個Exit的事件驅動,在WPF應用程式裡面關閉程式講究很多: 在WPF應用程式的關閉是有Shut ...
  • using (Image image = Image.FromFile(arrFiles[0])) { MemoryStream stream = new MemoryStream(); image.Save(stream, System.Drawing.Imaging.ImageFormat.Pn ...
  • 親身經歷記錄下來,以備後用。也希望能夠幫助到有需要的朋友們! 1、安裝之前首先下載VS2015,下載地址: 【VS2015社區版官方中文版下載】:http://download.microsoft.com/download/B/4/8/B4870509-05CB-447C-878F-2F80E4CB ...
  • 什麼是VBA?它有什麼作用? A.實現Excel中沒有實現的功能。 B.提高運行速度。 C.編寫自定義函數。 D.實現自動化功能。 E.通過插入窗體做小型管理軟體。 VBA在哪裡存放的?怎麼運行? A.模塊中 在Excel 2010中若沒有“開發工具”項,通過“文件”——“選項”——“自定義功能區” ...
  • 安裝IIS後訪問localhost頁面, 提示The remote procedure call failed and did not execute,再刷新變為:-2147467259 (0x80004005), 再刷新就變回去了,就在那兩句錯誤中不斷的重覆。 然後,百度。 解決方法: 在運行中運 ...
  • 這次來看一看this關鍵字的第二個用法:將對象作為參數傳遞到其他方法 41行代碼 Convert .ConvertedScore(this) 裡面的this也便就是“折算後的分數” 說實話,我對this關鍵字的這個用法理解的並不是太透徹,用的時候也是雲里霧裡的,所以希望網友們能夠積極的給我評論,給予 ...
  • 今日問題: 請問主程式輸出結果是什麼?(點擊以下“【Java每日一題】20161205”查看20161202問題解析) 題目原發佈於公眾號、簡書:【Java每日一題】20161205,【Java每日一題】20161205 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...