1、wx.Image和wx.Bitmap (下面所有的图例,均左边为原图,右边为处理过的图!!)
wx.Image用于加载和保存图片,而wx.Bitmap负责将图像显示到屏幕上
补充:wx.Bitmap()显示图片好像是要求图片为bitmap的样式,而不能是Image样式(这是自己的猜想,下面两点是我自己验证过的,所以我的猜想应该也没有什么问题的)。
(1)image = wx.Image("image.png",wx.BITMAP_TYPE_PNG)时,显示图像要这样写:wx.StaticBitmap(panel,-1,wx.BitmapFromImage(image)) ;
(2)image = wx.Image("image.png",wx.BITMAP_TYPE_PNG).ConvertToBitmap(),显示图像时就可以写成:wx.StaticBitmap(panel,-1,image)
2、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.
3、图像水平和垂直翻转:
Mirror(horizontally = True),这个返回一个镜像图像。
水平翻转image:image.Mirror(horizontally = True)
垂直翻转image:image.Mirror(horizontally = Flase)
4、改变原图的尺寸,可以变成自己想要的任意大小:R额scale(Width,height),
如:image.Rescale(200,150),这个指令执行后会将原图的Width=200,height=150,如下图:
这个方法可以用作任意缩放图像的处理方式之一!!
5、顺时针或逆时针旋转90度:Rotate90(clockwise = True/False),当clockwise=True时,顺时针旋转,clockwise=False时,图像逆时针旋转。如下图:
6、任意角度旋转,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 弧度
阅读(11433) | 评论(0) | 转发(1) |