話說又過了好幾天沒有寫網誌了
這次分享一個我之前遇過的問題
想想看,要怎麼把左圖變成右圖?
(IE 6之前的瀏覽器,看png圖可能有問題,像是背景變灰)
最近在做PM,因為覺得畫面表現不好
所以特地去找了PM的背向圖
結果發現他的圖都是把PM置中
但是因為Picturebox的位置是固定的(不固定也可,麻煩)
所以就變成圖型有一半是簍空狀
比較好的解決方式就是把圖片的空白去掉,下移成右圖樣子
可是如果要用PhotoImpact一張張下移的話
總共移493張我一定會瘋掉
你猜我最後怎麼解決?
我決定用VB.NET試寫一個程式
其實我對VB.NET的GDI繪圖不是很熟悉
只依稀記得可以用SexPixel的方式描點
但這個方式其實還蠻原始的
不過我實際寫過之後,發現其實並不會很難
因為這個程式碼不長也不難,這次就直接公佈原始碼吧
Dim num As Integer For num = 1 To 493 Label1.Text = "正在轉換第" & num & "筆" Application.DoEvents() Dim bmp As New Bitmap("D:\Henry\My Documents\BSPM\修改前\" & num.ToString("000") & ".png") Dim i, j As Integer Do j = 0 For i = 0 To bmp.Width - 1 If bmp.GetPixel(i, 79).Name.ToString = "ffffff" Then j += 1 End If Next If j = bmp.Width Then For i = 0 To bmp.Width - 1 For j = bmp.Height - 1 To 1 Step -1 bmp.SetPixel(i, j, bmp.GetPixel(i, j - 1)) Next Next Else Exit Do End If Loop bmp.Save("D:\Henry\My Documents\BSPM\修改過\" & num.ToString("000") & ".png", Drawing.Imaging.ImageFormat.Png) Next MessageBox.Show("完成")
看不懂啊?看不懂我也沒辦法(攤手)
....
不要丟東西啦,好啦我稍微解釋一下
首先我是先把圖片給讀進bitmap裡面
然後先判斷最下面一行是不是都是白色(ffffff)
如果都是白色的話,就從最下面開始,依序將上面的那個點複製過來
為什麼不是從上面開始呢?因為我們是要把圖案下移
如果從上面開始放的話,下一個像素的色彩就會被蓋掉了
然後設個Do Loop,當檢查出最下一排不是都白色的時候才跳出
最後記得要把bmp給存出去,記得要設定存出去的格式喔
整段程式碼只有短短30行不到,不過卻對我幫助很大
這個程式跑起來只花了兩分鐘就解決我本來要花幾十個小時的問題
不過記得不要用偵錯模式跑,速度會慢很多
因為偵錯模式會加入很多程式碼,拖慢你的速度
其實VB.NET並沒有自己想像的那麼難
有些事情不去做,永遠不知道結果
------
本日分享歌曲 涼宮春日插曲 - God Knows
最近Pixnet的維修次數變多了
有點擔心他會變成下一個無恥小站...
留言列表