【问题标题】:Resize existing JavaFX image调整现有 JavaFX 图像的大小
【发布时间】:2015-09-09 15:53:13
【问题描述】:

我必须加载图片:

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 相同的大小?

【问题讨论】:

标签: javafx


【解决方案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 by height。

请注意PixelGrabber.grabPixels() 是一个阻塞调用,因此您需要处理InterruptedExceptions。对于大图像,您可能希望在后台线程上执行 Task 来执行此操作,以免阻塞 FX 应用程序线程。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-24
    • 1970-01-01
    • 2014-12-11
    • 2015-03-09
    相关资源
    最近更新 更多