我必须加载图片:
Image image = new Image(f.toURI().toString(), width, height, true, true);
由于我也有tiff,我必须使用JAI加载它们:
BufferedImage read = ImageIO.read(f);
Image image = SwingFXUtils.toFXImage(read, null);
现在我有一个Image对象,但它的大小错误。 Image没有提供调整对象大小的方法。我如何调整大小是这样的大小,就像我用显示的行加载jpg或png一样?
答案 0 :(得分:1)
似乎应该有一种更简单的方法,但你可以尝试:
BufferedImage read = ImageIO.read(f);
int[] pixels = new int[width * height] ;
PixelGrabber grabber = new PixelGrabber(read.getScaledInstance(width, height, Image.SCALE_SMOOTH),
0, 0, width, height, 0, pixels, width);
grabber.grabPixels();
WritableImage fxImage = new WritableImage(width, height);
PixelWriter pw = fxImage.getPixelWriter();
pw.setPixels(0, 0, width, height, PixelFormat.getIntArgbInstance(), pixels, 0, width);
现在fxImage
是一个javafx.scene.image.Image
,其width
维度为height
。
请注意,PixelGrabber.grabPixels()
是阻止通话,因此您需要处理InterruptedException
。对于大图像,您可能希望在后台线程上执行的Task
中执行此操作,以免阻止FX应用程序线程。