我正在使用 PIL(python 图像库)裁剪一个非常大的图像并将裁剪区域呈现给界面。我遇到的问题是该过程花费的时间太长。当用户单击图像进行裁剪时,图像需要很长时间才能显示在我附加的尺寸器上。
我尝试了两种方法:首先,我尝试将裁剪区域作为图像保存到磁盘,然后将其动态加载到 sizer 中。第二次尝试是创建一个空图像并将 pil 图像转换为 wx 图像并将其加载到 sizer 上。令我惊讶的是,第一种写入磁盘的方法比第二种在内存中管理它的方法感觉更快。以下是代码示例:
第一种方法:
area = image_object.crop(self.cropxy)
area.save(CROP_IMAGE, 'jpeg')
crop_image = wx.Image(CROP_IMAGE, wx.BITMAP_TYPE_JPEG).ConvertToBitmap()
crop_bitmap = wx.StaticBitmap(self.crop_panel, bitmap=crop_image, name="Cropped Image")
crop_bitmap.CenterOnParent()
crop_bitmap.Refresh()
第二种方法:
area = image_object.crop(self.cropxy)
image = wx.EmptyImage(area.size[0], area.size[1])
image.SetData(area.convert("RGB").tostring())
crop_image = wx.BitmapFromImage(image)
crop_bitmap = wx.StaticBitmap(self.crop_panel, bitmap=crop_image, name="Cropped Image")
crop_bitmap.CenterOnParent()
crop_bitmap.Refresh()
有没有更好的方法来做到这一点,以便图像现在显示得如此缓慢?