[ harrynull.tech ] Stage-19 X BitMap

本來是做著好玩的三热,雖然好像有點(diǎn)腦洞鼓择,但是這個(gè)挺有意思的記錄一下
題目如下

#define test_width 40
#define test_height 7
static char test_bits[] = {
  0x00, 0x80, 0x00, 0x00, 0x00, 0x15, 0x80, 0xA0, 0x44, 0x80, 0x2B, 0xA9,
  0x66, 0xE4, 0x80, 0xB9, 0xAA, 0x28, 0x4C, 0x96, 0x09, 0xB3, 0x2C, 0x54,
  0xAA, 0x31, 0x82, 0x2A, 0x95, 0xAA, 0x80, 0x01, 0x0C, 0x00, 0x00, }; 

好了,沒了就漾,剛看完我是懵逼的呐能。。抑堡。
好吧摆出,再瞅瞅朗徊?
有寬和高,那么八成是個(gè)圖片了懊蒸,但是怎么把它變成圖片荣倾,看了一下bits有35個(gè),好像有點(diǎn)巧骑丸,正好是高的倍數(shù),那么排成7行的話妒貌,每行5個(gè)通危,唉,又很巧的灌曙,5*8不就是40的嗎菊碟,是8呢,那么十有八九要轉(zhuǎn)成2進(jìn)制在刺,于是我們得到如下

0000000000000001000000000000000000000000
1010100000000001000001010010001000000001
1101010010010101011001100010011100000001
1001110101010101000101000011001001101001
1001000011001101001101000010101001010101
1000110001000001010101001010100101010101
0000000110000000001100000000000000000000

好了繼續(xù)迷茫逆害。。蚣驼。
記得以前見過二進(jìn)制字符串轉(zhuǎn)成二維碼的魄幕,那么試試?
好的颖杏,動(dòng)手吧
然后得到了下面的腳本

from PIL import Image
s = [0x00, 0x80, 0x00, 0x00, 0x00, 0x15, 0x80, 0xA0, 0x44, 0x80, 0x2B, 0xA9, 0x66, 0xE4, 0x80, 0xB9, 0xAA, 0x28, 0x4C, 0x96, 0x09, 0xB3, 0x2C, 0x54, 0xAA, 0x31, 0x82, 0x2A, 0x95, 0xAA, 0x80, 0x01, 0x0C, 0x00, 0x00]

width = 40
height = 7

img = Image.new("RGB", (width, height))

flag = ''
for c in s:
    flag += bin(c)[2:].rjust(8,'0')

n = 0
for i in range(height):
    for j in range(width):
        if flag[n] == '0':
            img.putpixel([j, i], (255, 255, 255))
        else:
            img.putpixel([j, i], (0, 0, 0))
        n += 1

img.show()
# img.save('test.bmp')

然后智障的一幕出現(xiàn)了纯陨。。留储。

image.png

沒錯(cuò)翼抠。。获讳。我忘了它的寬高很小的問題了阴颖。。
然后我試了一下resize()丐膝,然后他給我報(bào)錯(cuò)了量愧,好吧,我錯(cuò)了尤误,我自己寫還不行嗎
然后有了下面這個(gè)

from PIL import Image
s = [0x00, 0x80, 0x00, 0x00, 0x00, 0x15, 0x80, 0xA0, 0x44, 0x80, 0x2B, 0xA9, 0x66, 0xE4, 0x80, 0xB9, 0xAA, 0x28, 0x4C, 0x96, 0x09, 0xB3, 0x2C, 0x54, 0xAA, 0x31, 0x82, 0x2A, 0x95, 0xAA, 0x80, 0x01, 0x0C, 0x00, 0x00]

width = 40
height = 7
t = 20

img = Image.new("RGB", (width*t, height*t))

flag = ''
for c in s:
    flag += bin(c)[2:].rjust(8,'0')

print len(flag)

for i in range(height*t):
    for j in range(width*t):
        x = j / t 
        y = i / t
        n = y*40 + x
        if flag[n] == '0':
            img.putpixel([j, i], (255, 255, 255))
        else:
            img.putpixel([j, i], (0, 0, 0))

img.show()
# img.save('test.bmp')

跑一下侠畔,出來長下面這樣

image.png

好像有點(diǎn)樣子了呢,是字母的樣子
翻轉(zhuǎn)看下损晤,有html呢软棺,應(yīng)該就是這樣弄沒錯(cuò),但這其他的我怎么看不懂啊尤勋。喘落。然后繼續(xù)懵逼
沒轍茵宪,去看了下評論,然后知道了這是X BitMap瘦棋,解法跟我想的一樣稀火,但是有一個(gè)問題,就是bit存放大小端的問題赌朋,于是我去改了一下代碼凰狞,將二進(jìn)制的數(shù)字倒轉(zhuǎn)一下
于是得到下面的

image.png

好了結(jié)果出來了,過程還是很有意思的
最后的代碼貼一下

# -*- coding: utf8 -*-
# by: gakki429
from PIL import Image
s = [0x00, 0x80, 0x00, 0x00, 0x00, 0x15, 0x80, 0xA0, 0x44, 0x80, 0x2B, 0xA9, 0x66, 0xE4, 0x80, 0xB9, 0xAA, 0x28, 0x4C, 0x96, 0x09, 0xB3, 0x2C, 0x54, 0xAA, 0x31, 0x82, 0x2A, 0x95, 0xAA, 0x80, 0x01, 0x0C, 0x00, 0x00]

width = 40
height = 7
t = 20 # 放大倍數(shù)

img = Image.new("RGB", (width*t, height*t))

flag = ''
for c in s:
    flag += bin(c)[2:].rjust(8,'0')[::-1] # 轉(zhuǎn)換為二進(jìn)制數(shù)字沛慢,并填充至8位然后倒轉(zhuǎn)

print len(flag)

for i in range(height*t):
    for j in range(width*t):
        x = j / t 
        y = i / t
        n = y*40 + x
        # print 'i:%d, j:%d, x:%d, y:%d, n:%d' % (i, j, x, y, n)
        if flag[n] == '0':
            img.putpixel([j, i], (255, 255, 255))
        else:
            img.putpixel([j, i], (0, 0, 0))

img.show()
# img.save('test.bmp')
關(guān)于X BitMap 
https://en.wikipedia.org/wiki/X_BitMap
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末赡若,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子团甲,更是在濱河造成了極大的恐慌逾冬,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件躺苦,死亡現(xiàn)場離奇詭異身腻,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)匹厘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進(jìn)店門嘀趟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人集乔,你說我怎么就攤上這事去件。” “怎么了扰路?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵尤溜,是天一觀的道長。 經(jīng)常有香客問我汗唱,道長宫莱,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任哩罪,我火速辦了婚禮授霸,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘际插。我一直安慰自己碘耳,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布框弛。 她就那樣靜靜地躺著辛辨,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上斗搞,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天指攒,我揣著相機(jī)與錄音,去河邊找鬼僻焚。 笑死允悦,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的虑啤。 我是一名探鬼主播隙弛,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼狞山!你這毒婦竟也來了驶鹉?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤铣墨,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后办绝,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體伊约,經(jīng)...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年孕蝉,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了屡律。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,902評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡降淮,死狀恐怖超埋,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情佳鳖,我是刑警寧澤霍殴,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站系吩,受9級特大地震影響来庭,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜穿挨,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一月弛、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧科盛,春花似錦帽衙、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春冀泻,著一層夾襖步出監(jiān)牢的瞬間常侣,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工弹渔, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留胳施,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓肢专,卻偏偏與公主長得像舞肆,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子博杖,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評論 2 354

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,116評論 25 707
  • 05石佳慧來訪 津渡目錄 期末基本上都是班主任的事椿胯,雖然都是些常規(guī)的事,但事事都要靠班主任來落實(shí)剃根,好在東方有一套偷...
    大尾巴狗閱讀 519評論 0 3
  • 畢業(yè)一年了哩盲,剛離開學(xué)校那會(huì)兒遇到了很多不順心的事情,厭煩此刻的生活又害怕面對未來的自己狈醉,夢想和現(xiàn)實(shí)的差距越來越遠(yuǎn)廉油,...
    堅(jiān)持自己最初的夢閱讀 231評論 0 1
  • 有一種動(dòng)物生活在非洲,長頸鹿苗傅,它被稱為世界上最悲傷的動(dòng)物抒线。 因?yàn)槿藗兛傉f它是“啞巴”,事實(shí)上它會(huì)說話渣慕,只是和大家不...
    Guanguannn閱讀 612評論 1 2