Here’s some code to display an image, scaled, on the paintable canvas. Also caches the read image to avoid a little bit of extra load:
g = event.graphics
filename = r"path/to/file.png"
cachedName = event.source.getClientProperty("img-bytes-cached-name")
bytes = event.source.getClientProperty("img-bytes-cached")
if filename!=cachedName or not bytes:
# Image not cached - load from database
#bytes = system.db.runScalarQuery("SELECT data FROM image_test WHERE imgname='%s'"%name)
bytes = system.file.readFileAsBytes(filename)
event.source.putClientProperty("img-bytes-cached",bytes)
event.source.putClientProperty("img-bytes-cached-name",filename)
if bytes:
from javax.imageio import ImageIO
from java.io import ByteArrayInputStream
# from java.awt.geom import AffineTransform
# scale = AffineTransform()
image = ImageIO.read(ByteArrayInputStream(bytes))
g.drawImage(image, 0, 0, event.width, event.height, event.source)