Как правильно обрезать внутри панели прокрутки? - PullRequest
1 голос
/ 17 октября 2019

Я получаю либо странное смещение моего обрезанного изображения, либо java.awt.image.RasterFormatException: (y + height) находится вне исключения Raster. Любая идея, что я делаю не так?

Я использую параметры смещения: параметрX и параметр Y, так как я уменьшал imageView ранее, но без использования тех я не получаю область обрезки, выбранную моим прямоугольником

private void CropImage() {
    BufferedImage src;
    try {
        src = ImageIO.read(imageSourceFile);

        double parameterX = image.getWidth() / imageView.getFitWidth();
        double parameterY = image.getHeight() / imageView.getFitHeight();

        int positionX = (int) ((image.getWidth() * scrollPane.getHvalue() / parameterX) + croppingRectangle.getX());
        int positionY = (int) ((image.getHeight() * scrollPane.getVvalue() / parameterY) + croppingRectangle.getY());
        int desiredWidth = (int) (parameterX * croppingRectangle.getWidth());
        int desiredHeight = (int) (parameterY * croppingRectangle.getHeight());

        BufferedImage destBuffered = src.getSubimage(positionX, positionY, desiredWidth, desiredHeight);

        File outputfile = new File("C:/Users/admin/Desktop/cropped.jpg");
        ImageIO.write(destBuffered, "jpg", outputfile);

        System.out.println("Image cropped successfully: " + outputfile.getPath());

    } catch (IOException ex) {
        System.out.println("couldnt load img");
    }

}
...