When I use the NavCanvas Zooming / panning tool on a high res jpeg image at certain zoom level the app laggs the more you zoom and at times crashes completely leacing the following python error:
wx._core.wxAssertionError: C++ assertion ""data"" failed at ./src/common/image.cpp(535) in ResampleNearest(): unable to create image
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/wx/lib/floatcanvas/FloatCanvas.py", line 455, in WheelEvent
self.GUIMode.OnWheel(event)
File "/usr/lib/python3/dist-packages/wx/lib/floatcanvas/GUIMode.py", line 130, in OnWheel
self.Canvas.Zoom(0.9, point, centerCoords = "Pixel", keepPointInPlace=True)
File "/usr/lib/python3/dist-packages/wx/lib/floatcanvas/FloatCanvas.py", line 761, in Zoom
self.MoveImage(-delta, 'World')
File "/usr/lib/python3/dist-packages/wx/lib/floatcanvas/FloatCanvas.py", line 721, in MoveImage
self.Draw()
File "/usr/lib/python3/dist-packages/wx/lib/floatcanvas/FloatCanvas.py", line 628, in Draw
self._DrawObjects(dc, self._DrawList, ScreenDC, self.ViewPortBB, HTdc)
File "/usr/lib/python3/dist-packages/wx/lib/floatcanvas/FloatCanvas.py", line 988, in _DrawObjects
Object._Draw(dc, WorldToPixel, ScaleWorldToPixel, HTdc)
File "/usr/lib/python3/dist-packages/wx/lib/floatcanvas/FCObjects.py", line 2164, in _Draw
Img = self.Image.Scale(int(W), int(H))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
wx._core.wxAssertionError: C++ assertion ""(width > 0) && (height > 0)"" failed at ./src/common/image.cpp(449) in Scale(): invalid new image size
Using the following code:
import wx
from wx.lib.floatcanvas import FloatCanvas, NavCanvas
from wx.lib.floatcanvas.FCObjects import ScaledBitmap
class MyFrame(wx.Frame):
def __init__(self, parent):
wx.Frame.__init__(self, parent, -1, "ScrolledThumb Demo", size=(1600,800))
path = "/home/user/images/my_shots/r5_manual_product_shots/1M4A0410.JPG"
self.Canvas = NavCanvas.NavCanvas(self, -1,
# size=(500, 500),
ProjectionFun=None,
Debug=0,
BackgroundColor="White",
).Canvas
self.img = wx.Image(path, wx.BITMAP_TYPE_JPEG)
W = self.img.GetWidth()
H = self.img.GetHeight()
self.bitmap = self.img
self.fbitmap = ScaledBitmap(self.bitmap, (0,0), H)
self.Canvas.AddObject(self.fbitmap)
# Add a circle
cir = FloatCanvas.Circle((10, 10), 100)
self.Canvas.AddObject(cir)
# Add a rectangle
rect = FloatCanvas.Rectangle((110, 10), (100, 100), FillColor='Red')
self.Canvas.AddObject(rect)
# Draw the canvas
self.Canvas.Draw()
app = wx.App(False)
frame = MyFrame(None)
frame.Show(True)
app.MainLoop()
On Ubuntu 24.04
Any idea why and how to fix that?