¿Cómo redimensionar y dibujar una imagen usando wxpython?

Quiero cargar una imagen, cambiar su tamaño a un tamaño dado y luego dibujarla en una posición específica en un panel.

Todo esto utilizando wxpython.

¿Cómo puedo hacerlo?

¡Gracias por adelantado!

wx.Image tiene un método de Scale que hará el cambio de tamaño. El rest es normal encoding wx.

Aquí hay un ejemplo completo para usted.

 import wx def scale_bitmap(bitmap, width, height): image = wx.ImageFromBitmap(bitmap) image = image.Scale(width, height, wx.IMAGE_QUALITY_HIGH) result = wx.BitmapFromImage(image) return result class Panel(wx.Panel): def __init__(self, parent, path): super(Panel, self).__init__(parent, -1) bitmap = wx.Bitmap(path) bitmap = scale_bitmap(bitmap, 300, 200) control = wx.StaticBitmap(self, -1, bitmap) control.SetPosition((10, 10)) if __name__ == '__main__': app = wx.PySimpleApp() frame = wx.Frame(None, -1, 'Scaled Image') panel = Panel(frame, 'input.jpg') frame.Show() app.MainLoop() 

En primer lugar, creo que los documentos y demostraciones de wxPython hacen un gran trabajo explicando cómo usar sus bibliotecas, especialmente porque las demostraciones se pueden jugar sobre la marcha para ver el efecto o puede volver al original. Aquí está el enlace de Windows para descargar todos los archivos:

http://www.wxpython.org/download.php#binaries

Dicho esto, aquí está el código de ejemplo de la demostración:

 def runTest(frame, nb, log): bmp = wx.Image(opj('bitmaps/image.bmp'), wx.BITMAP_TYPE_BMP).ConvertToBitmap() gif = wx.Image(opj('bitmaps/image.gif'), wx.BITMAP_TYPE_GIF).ConvertToBitmap() png = wx.Image(opj('bitmaps/image.png'), wx.BITMAP_TYPE_PNG).ConvertToBitmap() jpg = wx.Image(opj('bitmaps/image.jpg'), wx.BITMAP_TYPE_JPEG).ConvertToBitmap() panel = wx.Panel(nb, -1) pos = 10 wx.StaticBitmap(panel, -1, bmp, (10, pos), (bmp.GetWidth(), bmp.GetHeight())) pos = pos + bmp.GetHeight() + 10 wx.StaticBitmap(panel, -1, gif, (10, pos), (gif.GetWidth(), gif.GetHeight())) pos = pos + gif.GetHeight() + 10 wx.StaticBitmap(panel, -1, png, (10, pos), (png.GetWidth(), png.GetHeight())) pos = pos + png.GetHeight() + 10 wx.StaticBitmap(panel, -1, jpg, (10, pos), (jpg.GetWidth(), jpg.GetHeight())) return panel 

Aquí muestra cómo cargar una imagen y la muestra en un panel. Hay algunos objetos que no se explican aquí, pero deberían darle una idea general.

Si te refieres a agregar la imagen a una barra de herramientas / listbook / toolbook, etc., tendrás que convertirla en un bitmap (generalmente solo se permiten mapas de bits).

Por lo que sé, no puede redimensionar un bitmap, por lo tanto, tendrá que cambiar el tamaño de una imagen antes y luego convertirla.

Aquí hay un buen ejemplo http://markandclick.com/1/post/2011/12/wxpython-resize-embedded-bitmap-before-adding-it-as-a-tool.html

Aquí hay una copia del ejemplo:

 def getFolderBitmap(): img = folder_icon.GetImage().Rescale(scaleW, scaleH) return img.ConvertToBitmap()