【问题标题】:Which image formats can be resized in JavaFX在 JavaFX 中可以调整哪些图像格式
【发布时间】:2017-02-12 20:03:41
【问题描述】:

在我们的 JavaFX 构建的桌面应用程序中使用了大约 100 个 jpeg 和 png 彩色图像,当调整窗口大小时,这些图像会变得拉伸和模糊,所以我希望以允许它们的格式重新制作所有图形在不损失质量的情况下动态调整大小。应该使用什么图像格式或程序来执行此操作?

目前,每张图片都只是在 ImageView 中并按如下方式调整大小,但我愿意接受其他建议:

if(isSmall){
    Rectangle2D visualBounds = Screen.getPrimary().getVisualBounds();
    double sh = visualBounds.getHeight();
    Scale scale = new Scale(sh, sh, 0, 0);
    root.getTransforms().setAll(scale);
}

【问题讨论】:

    标签: java image javafx resize image-resizing


    【解决方案1】:

    正如已经提到的,SVG 可能是适合您的方式。 JavaFX 不直接支持 SVG,但您可以在此处找到支持 以javafxsvg 和此处svg-to-fxml-converter 为例。

    【讨论】:

    • 谢谢。我要么使用这个库,要么等待 Java 9 提供多分辨率图像。
    【解决方案2】:

    对于大多数常见格式,您无法将图像大小调整为大于实际大小而不会使图像变得模糊。相反,请确保您的图像足够大,因此您只需要缩小它们。

    我听说过的唯一可以进一步升级的格式是使用分形压缩,但 AFAIK 它并不常用。

    【讨论】:

    • 你的意思是你不能在 JavaFX 中调整图像的大小吗?有些图像格式可以在不损失质量的情况下放大(例如矢量图形)。我想知道其他人在我的情况下是怎么做的。
    • 当然,您可以调整矢量大小,但您提到了 JPEG 和 PNG。也许您想尝试 SVG 文件。
    • 对,我应该澄清一下。我希望以新格式重新制作所有图形,并正在寻找建议/希望确保它们与 JavaFX 一起使用。
    • 基本支持可缩放的 SVG 路径,但不支持完整的 SVG。
    • 但是,应该可以将 SVG 渲染到您喜欢的任何尺寸的 Canvas 上,而不是直接使用 JavaFX。它需要使用标准的 SVG 库并对其进行调整以绘制到画布上。
    猜你喜欢
    • 2014-08-04
    • 2017-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-01
    • 1970-01-01
    • 2016-01-13
    相关资源
    最近更新 更多