【发布时间】:2019-11-30 08:23:09
【问题描述】:
所以问题来了:我正在加载一个分辨率未知的图像。我需要将其缩放到 500px 宽度以适应我的 UI,同时保持纵横比。图像质量必须好,因为我以后需要使用它,专门用于计算图像中两个对象之间的角度。
到目前为止,我已经尝试了以下方法:
在以下示例中,我们有一个现有的 UI 元素
ImageView imageView;
方法一:在 JavaFX 图像构造函数中使用 scale on load:
public void setImage(String path){
Image image = new Image(path, 550, 412, true, true);
imageView.setImage(image);
}
这种方法实现了所需的缩放,但缺乏以后精确计算角度所需的质量。
方法二:使用ImageView缩放来缩放显示的图片:
public void setImage(String path){
Image image = new Image(path);
imageView.setFitWidth(550);
imageView.setPreserveRatio(true);
imageView.setImage(image);
}
这实现了所需的质量和缩放比例,但视图中包含的图像实际上并未缩放,这意味着稍后进行的计算使用的图像不代表正在显示的图像.
有没有办法我可以改变这些解决方案中的任何一个以更好地工作,或者我可以采取更好的方法吗?谢谢。
【问题讨论】:
-
这是stackoverflow.com/questions/27894945/… 的副本。你可能不想平滑图像,所以设置更改构造函数
new Image(path, 550, 412, true, false); -
@SME_Dev 如果我在我的帖子中详细说明了该答案中的解决方案,我不确定这是如何重复的,并说明它们都对我有问题。而且我不明白您使用错误的布尔标志是什么意思。我的理解是我已将保留比率设置为 true 并选择了更高质量的处理算法?
-
我刚刚尝试了您正在使用的代码和我拥有的图像,我注意到
ImageView和Image之间的质量没有视觉差异。在您edit 提出您的问题并按照已要求提供minimal reproducible example 以及您正在使用的图像以及您看到质量较低的位置的屏幕截图之前,我们真的无能为力了。跨度>