私は PIL (python 画像ライブラリ) を使用して非常に大きな画像をトリミングし、トリミングされた領域をインターフェイスに提示しています。私が抱えている問題は、プロセスに時間がかかりすぎることです。ユーザーが画像をクリックしてトリミングすると、添付したサイザーに画像が表示されるまでにかなりの時間がかかります。
これを 2 つの方法で実行してみました。まず、切り抜いた領域を画像としてディスクに保存し、オンザフライでサイザーにロードしました。2 番目の試みは、空の画像を作成し、pil 画像を wx 画像に変換して、サイザーにロードすることでした。驚いたことに、ディスクに書き込む最初の方法は、メモリ内でディスクを管理する 2 番目の方法よりも高速に感じられます。コードサンプルは次のとおりです。
最初の方法:
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()
2 番目の方法:
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()
画像が非常にゆっくりと表示されるようにするためのより良い方法はありますか?