Я получаю либо странное смещение моего обрезанного изображения, либо 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");
}
}