Sub ResizeImage(original As Image, newWidth As Int, newHeight As Int) As Image
' Dim jo As JavaObject
Dim bufferedImage As JavaObject
bufferedImage.InitializeNewInstance("java.awt.image.BufferedImage", Array(newWidth, newHeight, 2)) ' 2 = BufferedImage.TYPE_INT_ARGB
Dim g2d As JavaObject = bufferedImage.RunMethod("createGraphics", Null)
Dim renderingHints As JavaObject
renderingHints.InitializeStatic("java.awt.RenderingHints")
g2d.RunMethod("setRenderingHint", Array(renderingHints.GetField("KEY_INTERPOLATION"), renderingHints.GetField("VALUE_INTERPOLATION_BICUBIC")))
g2d.RunMethod("setRenderingHint", Array(renderingHints.GetField("KEY_ANTIALIASING"), renderingHints.GetField("VALUE_ANTIALIAS_ON")))
' Converter javafx.scene.image.Image para java.awt.Image
Dim swingFXUtils As JavaObject
swingFXUtils.InitializeStatic("javafx.embed.swing.SwingFXUtils")
Dim awtImage As JavaObject = swingFXUtils.RunMethod("fromFXImage", Array(original, Null))
g2d.RunMethod("drawImage", Array(awtImage, 0, 0, newWidth, newHeight, Null))
g2d.RunMethod("dispose", Null)
' Converter de volta para javafx.scene.image.Image
Dim resizedImage As Image = swingFXUtils.RunMethod("toFXImage", Array(bufferedImage, Null))
Return resizedImage
End Sub