摘要:圖形的縮放
通常, 圖形的縮放是很常用的動作, 花樣也很多
程式不難寫,難的是在, 如何做才能令人滿意?
有些問題需要解決
1. 是否縮放到和目標區域一樣大(ex: 圖是扁的, 目標區域卻是寬的)
2. 小變大, 會有失真現象, 不能放的太大, 也需要適度的使用柔邊
3. 大變小,是否可能令關鍵特徵消失或是模糊化(ex: 機器人影像辨識領域, 圖形縮小反而可能害關鍵的資訊不見)
如果會這樣就不該縮小, 而是對圖形"切塊"處理
以下先來看個簡單的程式
01 Dim 目標寬 As Integer = Me.PictureBox2.Width
02 Dim 目標高 As Integer = Me.PictureBox2.Height
03
04 Dim W As Integer = IMG.Width
05 Dim H As Integer = IMG.Height
06 Dim R As Double = W / H
07
08 W = 目標寬 ' 先依照寬度調整成一樣
09 H = W / R ' 高度按比例縮放
10
11 If H > 目標高 Then ' 但可能高度縮放後超過目標的高度
12 H = 目標高 ' 則 高度調整成和目標一樣
13 W = H * R ' 寬度按比例縮放
14 End If
15
16 TImg = New Bitmap(IMG, W, H) ' 重新產生一張圖型
17 Me.PictureBox2.Image = TImg ' 放進去
02 Dim 目標高 As Integer = Me.PictureBox2.Height
03
04 Dim W As Integer = IMG.Width
05 Dim H As Integer = IMG.Height
06 Dim R As Double = W / H
07
08 W = 目標寬 ' 先依照寬度調整成一樣
09 H = W / R ' 高度按比例縮放
10
11 If H > 目標高 Then ' 但可能高度縮放後超過目標的高度
12 H = 目標高 ' 則 高度調整成和目標一樣
13 W = H * R ' 寬度按比例縮放
14 End If
15
16 TImg = New Bitmap(IMG, W, H) ' 重新產生一張圖型
17 Me.PictureBox2.Image = TImg ' 放進去
來源圖形在picturebox1裡面, 欲縮放到picturebox 2, 且長寬比還要維持一樣
IMG就是picturebox1的image
這樣就能按照原來的比例縮放出一張新的圖
但, 有些時候想要存檔呢?
需要指定格式以後再存
1 Dim 格式 As Imaging.ImageFormat
2 格式 = Imaging.ImageFormat.Gif ' 這裡有很多格式可以選
3 TImg.Save(Me.SaveFileDialog1.FileName, 格式) ' 存到想要的地方
2 格式 = Imaging.ImageFormat.Gif ' 這裡有很多格式可以選
3 TImg.Save(Me.SaveFileDialog1.FileName, 格式) ' 存到想要的地方
但萬一沒有預設的格式可以符合需求
這部份就必須自己寫存檔的部份了, 或是上網抓相對的元件來用
最常見大概就是存成PDF檔案, 這下篇文章再來專門探討吧
順著天賦做事,逆著個性做人生命, 就該浪費在美好的事物上