调整现有JavaFX映像的大小

时间:2015-09-09 15:53:14

标签: javafx

我必须加载图片:

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一样?

1 个答案:

答案 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应用程序线程。