Ich verwende die PIL (Python Image Library), um ein sehr großes Bild zu beschneiden und den beschnittenen Bereich auf der Oberfläche darzustellen. Das Problem, das ich habe, ist, dass der Prozess zu lange dauert. Wenn der Benutzer auf das Bild klickt, um es zuzuschneiden, dauert es ziemlich lange, bis das Bild auf dem Sizer angezeigt wird, an den ich es angehängt habe.Beschleunigung der Bildanzeige
Ich habe versucht, diese zwei Möglichkeiten: Zuerst habe ich versucht, den beschnittenen Bereich als Bild auf die Festplatte zu speichern, und es im laufenden Betrieb in den Sizer geladen. Der zweite Versuch bestand darin, ein leeres Bild zu erstellen und das pil-Bild in das wx-Bild zu konvertieren und auf den Sizer zu laden. Überraschend für mich ist, dass sich die erste Methode, auf die Festplatte zu schreiben, schneller anfühlt als die zweite Methode, sie im Speicher zu verwalten. Hier sind die Codebeispiele:
Erste Methode:
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()
Zweite Methode:
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()
Gibt es einen besseren Weg, dies zu tun, so dass das Bild jetzt so langsam auftauchen wird?
Haben Sie versucht, es Timing, welcher Teil die meiste Zeit macht? Wie groß ist die Bildgröße und wie viel beschneiden Sie? –
Ich habe das groß rausgefunden –