J'utilise le PIL (bibliothèque d'images python) pour recadrer une très grande image et présenter la zone recadrée à l'interface. Le problème que j'ai, c'est que le processus prend trop de temps. Lorsque l'utilisateur clique sur l'image pour la recadrer, l'image prend beaucoup de temps à apparaître sur le calibreur auquel je l'attache.Accélérer l'affichage de l'image
J'ai essayé de le faire de deux façons: D'abord, j'ai essayé d'enregistrer la zone recadrée en tant qu'image sur le disque, et l'ai chargé à la volée dans le calibreur. La deuxième tentative consistait à créer une image vide et à convertir l'image pil dans l'image wx et à la charger dans le calibreur. Ce qui me surprend, c'est que la première méthode d'écriture sur le disque est plus rapide que la seconde méthode de gestion en mémoire. Voici les exemples de code:
Première méthode:
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()
Deuxième méthode:
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()
Y at-il une meilleure façon de le faire afin que l'image va maintenant apparaître si lentement?
Avez-vous essayé de synchronisation, ce qui fait partie le plus de temps? Quelle est la taille de l'image et combien vous recadrez? –
Je l'ai compris –