一.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