Вам необходимо проверить, есть ли у используемого вами инструмента параметр resample
, который изменит количество пикселей в полученном изображении. Алгоритм повторной выборки решает, что произойдет, когда пиксели будут добавлены или удалены.
Вы можете использовать параметр Scale()
или Rescale()
для изображения в wxpython и указать способ его повторной выборки с помощью аргумента quality
.
т.е. * +1008 *
img.Scale(width, height, quality=wx.IMAGE_QUALITY_HIGH)
Аргумент quality
принимает следующие параметры:
wx.IMAGE_QUALITY_NEAREST Simplest and fastest algorithm.
wx.IMAGE_QUALITY_BILINEAR Compromise between wx.IMAGE_QUALITY_NEAREST and wx.IMAGE_QUALITY_BICUBIC.
wx.IMAGE_QUALITY_BICUBIC Highest quality but slowest execution time.
wx.IMAGE_QUALITY_BOX_AVERAGE Use surrounding pixels to calculate an average that will be used for new pixels.
wx.IMAGE_QUALITY_NORMAL Default image resizing algorithm used by wx.Image.Scale .
wx.IMAGE_QUALITY_HIGH Best image resizing algorithm.
Основываясь на вашем комментарии, вот простой пример.
Просто измените размер окна изображений, чтобы отслеживать изменение размера окна.
import wx
class MyFrame ( wx.Frame ):
def __init__( self, parent ):
wx.Frame.__init__ ( self, parent, id = wx.ID_ANY, title = "Resize This Window", size = wx.Size( 500,300 ))
bSizer = wx.BoxSizer( wx.HORIZONTAL )
self.img1=wx.Image("bgimage1.png", wx.BITMAP_TYPE_PNG)
self.img2=wx.Image("bgimage1.png", wx.BITMAP_TYPE_PNG)
self.m_bitmap1 = wx.StaticBitmap( self, wx.ID_ANY, wx.Bitmap(self.img1))
self.m_bitmap2 = wx.StaticBitmap( self, wx.ID_ANY, wx.Bitmap(self.img2))
bSizer.Add( self.m_bitmap1, 1, wx.EXPAND|wx.ALL, 0 )
bSizer.Add( self.m_bitmap2, 1, wx.EXPAND|wx.ALL, 0 )
self.Bind(wx.EVT_SIZE, self.onResize)
self.SetSizer( bSizer )
self.Layout()
self.Centre(wx.BOTH)
def onResize(self, event):
frame_size = self.GetSize()
frame_h = (frame_size[0]-10) / 2
frame_w = (frame_size[1]-10) / 2
img1 = self.img1.Scale(frame_h, frame_w, quality=wx.IMAGE_QUALITY_HIGH)
img2 = self.img2.Scale(frame_h, frame_w, quality=wx.IMAGE_QUALITY_HIGH)
self.m_bitmap1.SetBitmap(wx.Bitmap(img1))
self.m_bitmap2.SetBitmap(wx.Bitmap(img2))
self.Refresh()
self.Layout()
app = wx.App()
MyFrame(None).Show()
app.MainLoop()