是時候了嗎?

今天早上因為習性的關係提早兩個鐘頭醒來
假日嘛~多睡一下比較正常吧?
夢…

果然淺度睡眠比較容易做夢哪~
雖然有點忘記細節是啥,反正也不會太符合邏輯啦~哈哈!
具體上來說,算是一種滿足自己慾望(不是性慾望=口=(有點小可惜(歐飛)))的夢
但還是一個字「爽」

今天中午看了關注已久的「今週、妻が浮気します」第10回
劇中的主角雙方都要有了新的開始,工作也都恢復正常
本來以為要END了,沒想到最後男主角的公司要被合併了(笑)

話說,今天好像是愚人節?(過12點了)

BMP檔解析筆記

話說,上禮拜下了個決心,那就是寫一個封裝的程式,就是把一堆圖檔音樂什麼鬼的都丟在一個檔案裡面那樣
既然如此,就得深入該檔案的格式和內容了
本來很狂妄的想直接從PNG開始,最終還是不敵英文的猛攻,轉戰最通用也最多資料也最簡單的BMP檔
雖說簡單,但也搞了兩三天,不斷的爬文在爬文,還真是辛苦哪XD

 

點陣圖檔主要分為四部份:

  • 點陣圖標頭檔:點陣圖檔案資訊。
    Bitmap Header: stores general information about the bitmap file.
  • 點陣圖資訊:點陣圖影像的資訊。
    Bitmap Information: stores detailed information about the bitmap image.
  • 調色盤:所用到的顏色資料。
    Color Palette: stores the definition of the colors being used.
  • 點陣圖資料:每個像素的資料。
    Bitmap Data: stores the actual image, pixel by pixel.

其中,24位元的圖檔,每個像素都可視為一個調色盤,故沒有調色盤的資料。

 

以下用程式說明,我覺得比較簡單…

BITMAPFILEHEADER pBmp;  // 用來儲存標頭檔的結構

typedef struct tagBITMAPFILEHEADER {
        WORD bfType;
        DWORD bfSize;
        WORD bfReserved1;
        WORD bfReserved2;
        DWORD bfOffBits;
} BITMAPFILEHEADER;

BITMAPINFOHEADER pBMIH;  // 用來儲存資訊的結構

typedef struct tagBITMAPINFOHEADER{
        DWORD biSize;
        LONG biWidth;
        LONG biHeight;
        WORD biPlanes;
        WORD biBitCount;
        DWORD biCompression;
        DWORD biSizeImage;
        LONG biXPelsPerMeter;
        LONG biYPelsPerMeter;
        DWORD biClrUsed;
        DWORD biClrImportant;
} BITMAPINFOHEADER

structRGB TempRGB;  // 用來儲存點陣圖資料的結構

// 當然要先開一個BMP檔哩!
ifstream infile("data\\Title.bmp", ios_base::in | ios_base::binary);

《點陣圖標頭檔》

// [0~1][WORD] 點陣圖檔案的辨識符號,通常都是 0x42 0x4D ( ‘B‘ & ‘M’)
infile.read(reinterpret_cast<char*>(&pBmp.bfType), sizeof(WORD));

// [2~5][DWORD] 整個點陣圖檔案的大小
infile.read(reinterpret_cast<char*>(&pBmp.bfSize), sizeof(DWORD));

// [6~7][WORD] & [8~9][WORD] 保留的空間,應該沒啥用
infile.read(reinterpret_cast<char*>(&pBmp.bfReserved1), sizeof(WORD));
infile.read(reinterpret_cast<char*>(&pBmp.bfReserved2), sizeof(WORD));

// [10~13][DWORD] 點陣圖標頭+資訊的大小
// 換句話說,檔案開頭的位址 + 這個大小 = 點陣圖資料的起始位址
infile.read(reinterpret_cast<char*>(&pBmp.bfOffBits), sizeof(DWORD));

《點陣圖資訊》

// [14~17][DWORD] 資訊部分的大小
infile.read(reinterpret_cast<char*>(&pBMIH.biSize), sizeof(DWORD));

// [18~21][DWORD] 影像的寬度
infile.read(reinterpret_cast<char*>(&pBMIH.biWidth), sizeof(DWORD));

// [22~25][DWORD] 影像的高度
infile.read(reinterpret_cast<char*>(&pBMIH.biHeight), sizeof(DWORD));

// [26~27][WORD] 色彩面的個數(硬翻的),通常沒在用
infile.read(reinterpret_cast<char*>(&pBMIH.biPlanes), sizeof(WORD));

// [28~29][WORD] 每個像素的位元數,也就是色彩深度,通常為 1, 4, 8, 24, 32
infile.read(reinterpret_cast<char*>(&pBMIH.biBitCount), sizeof(WORD));

// [30~33][DWORD] 壓縮演算法,未壓縮則為 0,詳請看wiki
infile.read(reinterpret_cast<char*>(&pBMIH.biCompression), sizeof(DWORD));

// [34~37][DWORD] 點陣圖影像的大小(和檔案大小不同)
infile.read(reinterpret_cast<char*>(&pBMIH.biSizeImage), sizeof(DWORD));

// [38~41][LONG] 水平解析度
// [42~45][LONG] 垂直解析度
infile.read(reinterpret_cast<char*>(&pBMIH.biXPelsPerMeter), sizeof(LONG));
infile.read(reinterpret_cast<char*>(&pBMIH.biYPelsPerMeter), sizeof(LONG));

// [46~49][DWORD] 所用顏色的數目
infile.read(reinterpret_cast<char*>(&pBMIH.biClrUsed), sizeof(DWORD));

// [50~53][DWORD] 重要顏色的數目,如果都很重要,則與 "所用顏色的數目" 相等
infile.read
(reinterpret_cast<char*>(&pBMIH.biClrImportant), sizeof(DWORD));

到此總共 54 位元,基本上點陣圖檔的標頭+資訊都這麼大

調色盤,目前用途只需要24位元即可,所以省略調色盤~

接著就是最重要的像素資料啦~

24位元的像素資料由 4 個 DWORD 組成,分別為:(保留)、R、G、B,四個值表示如下:

typedef struct
{
        DWORD reserve;
        DWORD r;
        DWORD g;
        DWORD b;
}structRGB;

資料參考:

http://www.thethirdmedia.com/pc/200407/20040722117029.shtm
http://www.shengfang.org/blog/p/bmpformat.php
http://zh.wikipedia.org/wiki/BMP
http://en.wikipedia.org/wiki/Windows_and_OS/2_bitmap
http://andrew.csie.ncyu.edu.tw/DOC2/BMP.doc
http://big5.yesky.com/b5/dev.yesky.com/164/2291664.shtml

還有最重要的 Yahoo!Google !!

◎補充:

點陣圖的像素資料儲存的方法是:由下往上,由左往右。
所以第一筆像素資料是在圖片的左下角,會後一筆資料在右上角。

久違的運動…

今天依然早起去上日文雖然也只能聽1節課(234上物理…),不過還是有差吧~哈哈!
一進教室就傳來劉若英「很愛很愛你」的旋律
原來這就是上禮拜第二節課交的歌曲呀~我還蠻喜歡這旋律的說

<h1>「未来へ」
                   Kiroro
</h1>

ほら 足元を見てごらん
これがあなたの歩む道
ほら 前を見てごらん
あれがあなたの未来
母がくれたたくさんの優しさ
愛を抱いて歩めと繰り返した
あの時はまだ幼くて意味など知らない
そんな私の手を握り
一緒に歩んできた
夢はいつも空高くあるから
届かなくて怖いね だけど追い続けるの
自分のストーリー だからこそ諦めたくない
不安になると手を握り
一緒に歩んできた
その優しさを時には嫌がり
離れた母へ素直になれず
ほら 足元を見てごらん
これがあなたの歩む道
ほら 前を見てごらん
あれがあなたの未来
その優しさを時には嫌がり
離れた母へ素直になれず
ほら 足元を見てごらん
これがあなたの歩む道
ほら 前を見てごらん
あれがあなたの未来
ほら 足元を見てごらん
これがあなたの歩む道
ほら 前を見てごらん
あれがあなたの未来
未来へ向かって
ゆっくりと歩いて行こう

請自行搭上劉若英那首歌的旋律去唱吧~哈!
日文版的在敘述身在異鄉的子女(我沒聽到多少解說><)
中文版的在敘述男女之愛
聽起來感覺還真有那麼一點差異
同樣都在98年出專輯的,時間過得真快哪~(遠望)  

這學期第一次的壘球,意外的多人哪@@!!
第一次看到防守全到位(防守能力就不一定成正比就是…)
揮出的第一顆球,很漂亮的內野高飛---接殺!
今天被電太慘,學長們看不下去,就重新分隊哩~
第二次開打換我當投手(投手跑去另一隊了…),還是被電爆  囧
雖然只打五局,但是我投了破百球了吧
三局上,對方打者輪兩次半才結束…
真是慘慘慘哪~~!!!! 

By the way~
僅存的三隻小兔子又一隻在今早歸天了(默)

歸天

一個平常的星期四

上完卡漫後,和溫哥去參觀應藝系的畢展「藝召站」

整體感覺還蠻不錯的,尤其那個安全帽,感覺真是砸錢哪!每頂都新的耶~

還有一個什麼膠囊戰隊的XX報導(很謎樣的動畫),還蠻搞笑的說

溫哥本來要順便拍照的,但是他相機的電池都沒電了,真是搞笑了…

 

大概晃了一下就回宿舍了

鄭在被下午要考的日文單字時,小奈從房間把兔子拎出來

過沒多久,就喊著兔子掛掉一隻了

走過去看他手上抱著一條(真的變一條了=口=)兔子,用手指一直戳他肚子
(背景是一個看起來焦躁不安的壽司)

已經變硬了,用看的感覺是如此啦~
(我沒親手去摸,某種心理因素阻止我)

可能當時專注於複習單字吧~不是很有心情上的起伏…

晚上社團回來後,習慣性的看看兔籠,看著那幾隻小兔子躺著睡就給他很擔心是不是又掛了
(其實比較好奇兔子幹啥躺著睡,呵呵!!)

不知道那隻升天的小兔子被埋到哪去了,願他一路平安吧~

四兔降臨

本來下午還蹦蹦跳跳的壽司(兔子名)

竟然在晚上8點左右發現到她腳下多了四坨 – 大便!! 

—–倒流—–

話說,去年四五月時,我們還在學校宿舍囂張時(?)

某次去家樂福夜市,毛球(蠢蛋)、小奈(壽司)和淫魔(咪醬?)買了三隻兔子,真的可愛到炸>_<

到放假前一直是我們的最佳玩物哪!

事隔一個暑假後,兩隻兔子都不復當年青春年華(?),變得大又會臭
(不過摸起來比較爽就是了XD)

當時老闆很有技術性的哄騙我們一群渣們,說蠢蛋是母的,壽司是公的

為什麼一直沒有被拆穿咧?

因為,從暑假開學後到寒假之前,壽司總是追著蠢蛋跑,一直騎著蠢蛋,甚至還因此咬掉蠢蛋的毛

只有一次,親眼看見蠢蛋反常性的騎在壽司上,不過隔天又恢復了,一直沒在意=  =

直到了今天,一切的一切都明朗化了!

HanHan’s寵物窩

看著這網站開始推敲以往壽司的行為…

母兔發情的行為都有出現過的樣子(親眼看見為準)

假設蠢蛋也是母的話,兩隻互騎是很正常的,母兔還會學公兔射精後倒地的動作,兔子界果然不容小祛呀!

據壽司的主人(小奈)所言,她曾在寒假與親戚的兔子接觸過,算一算,也差不多一個月左右了

急速增肥,發出「ㄏㄧㄏㄧ」的聲音,咬人,等等之類的…

 

雖然這算是喜事吧?

但是後續的照顧可就忙了小奈吧~辛苦啦!
(照顧完我要一隻嘿XD)

2007台灣燈會結束哩~

今天是燈會最後一天

人雖然沒有昨天那麼的誇張多,但還是給他有點擠

這天看了三場煙火秀(真閑啊我們~)

最後一場也是閉幕煙火秀,據說有2萬多發耶!!

挑在最前面的區域觀賞煙火,果然爽呀!!

高空煙火爆發的那一瞬間,連衣服都為之震動

 

在閉幕之前,終於找到小牙籤顧的攤位

我們在那邊玩免費籃球九宮格,搞得沒客人上門,阿哈哈!!
(媽的~~那個九宮格根本是詐欺嘛!!籃框和球幾乎一樣)

而後跑到隔兩攤的原住民攤位,試喝小米酒>_<

喝了四種,濃度越來越濃,最後一個38度的,倫底迪還嗆到咧!!
(幸好他嗆到,不然我可能也要直接下去了XD)

淫魔和建建爭論許久,買了一瓶小米露(NT300→250元)

 

無聊來算算這次花掉的COCO好了=口=~

黑龍蔭油旁的蘿蔔糕 – 20元
不怎麼樣的豬血糕 – 30元
不會酸的金桔檸檬 – 30元
小牙籤推薦的牛肉捲 – 50元
閉幕後傾銷的熱狗*2 – 20元

總計花了150元,好像還蠻OK的吧~哈哈!!

 

這次燈會的總結心得:

下次要選在閉幕後去撿尾刀,30元→10元,這不搶怎行咧?!你說對吧?

摩斯電碼&女高中生

今天真的是閑到發慌了…

依然是整棟最早起的我(當然沒比爆肝的早=_=),草草解決早餐

大概過兩個鐘頭,雖然不餓,基於太無聊,又是沒吃過的店,陪腹癢去吃「來來簡餐店」吃中餐

隔壁賣排骨飯的那家店有個電視台正在訪問,應該是燈會的關係吧?

非常斷斷續續的寫著C嘎嘎,也無聊點到YAHOO首頁的一個連結「密碼簡訊?日本高女愛用

沒想到他們已經無聊到可以用這麼麻煩的摩斯電碼(Morse code)在上課中用自動筆來交談(暈)

吸收新知(?)之虞,也順便了解一下常在倪匡小說裡面看到的密碼是怎麼個回事

而後,和牛奶一到朴子的賣場大肆採購一番,大豐收啊!!哈哈哈!!

晚上十一點多的時候,才剛進入魔獸信長的我,竟然馬上答應跳GAME,去朴子載輪胎洩氣的學弟回來,我果然太無聊了=_=||

今天燈會的人潮也似乎到達最高峰了吧~煙火秀特別久,特別猛!!
(天哪~好多"小朋友"衝上天際引火自焚啊!!)

說到燈會,順便提一下「全國擲杯大賽」,在寒假的時候,還蠻時常看到這個比賽的廣告

只是沒想到舉辦地點在宿舍附近的XX廟旁邊而已…

送整棟樓房耶!!聽起來就很猛!!

可是,在昨天之前的一個禮拜以來,天天早上起來都聽到主持人(應該是用錄音的)講得口沫橫飛

台下滿滿的—–椅子。

每每經過的時候,總是為這比賽感到可憐…

或許,皇天不負苦心人,在昨天終於看到有人群聚在台下,耳邊傳來的也不是錄音了!!

到了今天,人似乎更多了!!可喜可賀、可喜可賀!!

明天就是最後一天的燈會了,遠在台北的爸媽沒空來看看真是有點可惜哪~

2007台灣燈會在嘉義

放完寒假剛回到嘉義的時候

原本一片雜草的地方變成了停車場,還有一些變動(想不起來XD)

當得知這次主辦在嘉義縣政府這的時候,就一直在想,哪裡有這種地方舉辦啊??

到了228前後,以縣府為中心,紛紛開始張燈結綵,開始有燈會的氣氛了!!
(不知道位啥腦中浮現出"張燈結綵"這四個字,不知有沒有用錯,哈哈!!)

今天下午其他人紛紛起床後,聽說有限量豬燈籠可以拿,官方連結

六點左右,從宿舍走到縣府前,沒想到已經發完了 囧

看來是消息錯誤,五點就開始發放了…

正當我們失望之際,遠方燈會舞台上的主持人停下了聲音之時

眼角瞥到主燈向上噴出四顆光球,伴隨著很震撼的音效(?)

縣府前的鄉民們全部望向高空中的四顆光球嘖嘖稱奇!!
(總之就是一陣歡呼聲)

接著我們也開始向燈會區移動,才剛到邊緣,今天唯一的一場煙火秀也開始了

煙火這種東西哪…現場看和電視上完全兩回事吧~

以往在台北時,在家裡看著電視,聽著外面傳來的煙火聲,中和還聽得到,真神奇XD
(突然覺得很空虛=口=|||)

嘛~看著煙火的同時,在看看附近的鄉民,果然旁邊還是要有人才更有那種FU吧!!
(突然覺得很怨念…)

煙火結束後,先在主燈附近看看,有嘉義高鐵站、北回歸線太陽館、漁人碼頭等等的燈飾

還有一些大廠商的燈飾(廣告),月眉、九族、劍湖山、小人國之類的

會場還有出租腳踏車或者遊園小火車可以座,還蠻想做看看的說!!

其實沒什麼仔細看,主要是肚子太餓了吧…從起床到晚上七點都還沒吃過正餐

反正有一個禮拜可以看,改天再去看看囉~

附帶一提,裡面的民俗街,其實就是小型夜市…