Я использую PIL (библиотеку изображений Python), чтобы обрезать очень большое изображение и представить обрезанную область интерфейсу. У меня проблема в том, что процесс занимает слишком много времени. Когда пользователь нажимает на изображение, чтобы обрезать его, изображение занимает довольно много времени, чтобы показать на том, к которому я его прикрепляю.
Я попытался сделать это двумя способами: сначала я попытался сохранить обрезанную область как изображение на диск и загрузил ее на лету в сортировщик. Вторая попытка состояла в том, чтобы создать пустое изображение и преобразовать изображение pil в изображение wx и загрузить его в классификатор. Меня удивляет, что первый способ записи на диск работает быстрее, чем второй способ управления им в памяти. Вот примеры кода:
Первый метод:
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()
Есть ли лучший способ сделать это так, чтобы изображение теперь отображалось так медленно?