一.wx.Image和wx.Bitmap
wxPython主要有兩個圖像相關的類:wx.Image和wx.Bitmap 二者分工不一樣
wx.Image用於加載、處理、保存圖片,而wx.Bitmap負責將圖像顯示到屏幕上,wx.Bitmap沒有修改圖片的api。
一、加載圖片:
加載一個png圖片:
image = wx.Image("image.png",wx.BITMAP_TYPE_PNG)
若加載圖片格式不肯定,可使用wx.BITMAP_TYPE_ANY.
二、wx.Image轉成wx.Bitmap
可使用:bitmap = wx.Image("image.png",wx.BITMAP_TYPE_PNG).ConvertToBitmap()
部分文章使用:
bitmap = wx.BitmapFromImage(image)
來轉換,此方法已經被過期,使用此方法會有警告信息。
三、顯示圖像:wx.StaticBitmap(panel,-1,bitmap)
html
二.基於wx.Image的圖像處理
一、特別注意:圖像處理api不在原圖上修改,而是生成新的實例
使用wx.Image下面的api處理的時候,一開始被坑了,發現沒任何效果,後來招到緣由。例如調整大小,必需要寫成:image = image.Scale(100,100) ,寫成image.Scale(100,100)沒有效果。不會在原圖上修改,而好似返回一個新的實例。不光Scale如此,其餘的api也是同理。這個千萬要注意。
二、調整大小
image.Scale(w/2,h/2) 這個指令爲:縮小圖片文件名爲「image」的圖片到原圖的一半,若是是放大,就乘上要放大的倍數!
這裏縮放的前提是要獲得原圖像的Width和Height,能夠用GetWidth()和GetHeight()方法獲取原圖的Width和Height。
例如獲取原圖名爲image的Width和Height,能夠這樣作:w = image.GetWidth(),h = image.Height()。這樣作完的w,h值就是原圖的Width和Height.
三、圖像水平和垂直翻轉:
Mirror(horizontally = True),這個返回一個鏡像圖像。
水平翻轉image:image.Mirror(horizontally = True)
垂直翻轉image:image.Mirror(horizontally = Flase)
四、改變原圖的尺寸,能夠變成本身想要的任意大小:R額scale(Width,height),
如:image.Rescale(200,150),這個指令執行後會將原圖的Width=200,height=150,以下圖:
這個方法能夠用做任意縮放圖像的處理方式之一!!
五、順時針或逆時針旋轉90度:Rotate90(clockwise = True/False),當clockwise=True時,順時針旋轉,clockwise=False時,圖像逆時針旋轉。以下圖:
六、任意角度旋轉,Rotate(angle,rotationCentre,interpolating = True,offsetAfterRotation = None),返回旋轉原圖後的一個新的圖像。
angle:這是一個浮點數,表明旋轉的弧度,而不是度數!(底下附上弧度和角度之間的換算關係)
rotationCentre:旋轉的的中心,是一個wx.Point。
interpolating:設置一個較慢而精準的算法被使用。該值爲True時,該算法被使用!
offsetAfterRotation:也是一個wx.Point,一個座標點,代表旋轉後的圖像應該移位多少。
注意:任何沒有被覆蓋的空白像素會被設置成爲黑色!!!
例子片斷代碼以及效果圖以下:
rota = wx.Point(image.GetWidth(),image.GetHeight())
image3 = image.Rotate(3.14152/4,rota,interpolating = True)
wx.StaticBitmap(panel,-1,wx.BitmapFromImage(image3),pos = (300,0))
(旋轉45度後的效果圖):
(旋轉90度後的效果圖,圖片像素都有被覆蓋到,因此沒有黑色塊!)
附加:弧度和角度之間的換算:
一個平角是 π 弧度,即:180度=π弧度
由此可知:
1度=π/180 弧度 ( ≈0.017453弧度 )
所以,獲得 把度化成弧度的公式:
弧度=度×π/180
例如:
90°=90×π/180 =π/2 弧度
60°=60×π/180 =π/3 弧度
45°=45×π/180 =π/4 弧度
30°=30×π/180 =π/6 弧度
120°=120×π/180 =2π/3 弧度 算法
本文大部分文字基於:http://blog.chinaunix.net/uid-29127275-id-3922307.html
本人根據本身的經驗作部分添加、修改api