如何在JavaFX中更改图像的长宽比?

javafx.scene.image.Image类用于图像加载到JavaFX应用程序。这支持BMP,GIF,JPEG和PNG格式。

JavaFX提供了一个名为javafx.scene.image.ImageView的类,该类用于显示加载的图像。

ImageView类的booleanRatio属性(布尔值)指定在使用当前ImageView对象显示图像时,是否应保留图像的高宽比。您可以使用setPreserveRatio()方法将值设置为此属性。

默认情况下,此属性的值为true,即,即使您更改图像的宽度或高度,显示的图像的纵横比也将与源相同。

更改图像的宽高比-

  • 通过传递所需图像的URL(字符串)作为参数来实例化Image类。

  • 实例化ImageView类。

  • 通过将图像对象作为参数传递给setImage()方法来为其设置图像。

  • 使用setPreserveRatio()方法将prepareRatio属性设置为false 。

  • 现在,如果使用或更改图像的高度,则其纵横比将被篡改。

示例

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.paint.Color;
import javafx.stage.Stage;
public class PerspectiveRatioExample extends Application {
   public void start(Stage stage) throws IOException {
      //创建图像对象
      InputStream stream = new FileInputStream("D:\\images\\elephant.jpg");
      Image image = new Image(stream);
      //创建图像视图
      ImageView imageView1 = new ImageView(image);
      //设置图像视图参数
      imageView1.setX(170);
      imageView1.setY(10);
      imageView1.setFitWidth(270);
      imageView1.setPreserveRatio(true);
      //创建图像视图
      ImageView imageView2 = new ImageView(image);
      //设置图像视图参数
      imageView2.setX(10);
      imageView2.setY(180);
      imageView2.setFitWidth(580);
      imageView2.setFitHeight(160);
      imageView2.setPreserveRatio(false);
      //设置场景对象
      Group root = new Group(imageView1, imageView2);
      Scene scene = new Scene(root, 595, 350, Color.BEIGE);
      stage.setTitle("Perspective Ratio Example");
      stage.setScene(scene);
      stage.show();
   }
   public static void main(String args[]) {
      launch(args);
   }
}

输出结果