Search code examples
javaimagejavafxscaletype

Center crop image JavaFX


How can I accomplish Android scaleType="centerCrop" using JavaFX?

I have my image view:

ImageView myImage = new ImageView("https://example.com/image/my_image.png");

//maybe
//myImage.scaleType = "centerCrop";

Solution

  • Thanks to @TravisF for the post, I've implemented the last solution to make the image always has the same height, widht and position (center).

    double newMeasure = (userImage.getImage().getWidth() < userImage.getImage().getHeight()) ? userImage.getImage().getWidth() : userImage.getImage().getHeight();
    double x = (userImage.getImage().getWidth() - newMeasure) / 2;
    double y = (userImage.getImage().getHeight() - newMeasure) / 2;
    
    Rectangle2D rect = new Rectangle2D(x, y, newMeasure, newMeasure);
    userImage.setViewport(rect);
    userImage.setFitWidth(150);
    userImage.setFitHeight(150);
    userImage.setSmooth(true);