import java.io.File;
import java.awt.image.BufferedImage;
import java.awt.Graphics2D;
import javax.imageio.ImageIO;
import javafx.embed.swing.SwingFXUtils;
import javafx.scene.image.WritableImage;

public class Reproducer {
    public static void main(String[] arg) throws Exception {
        BufferedImage inputImage = ImageIO.read(new File("test.png"));

        BufferedImage argbImage = new BufferedImage(
            inputImage.getWidth(), inputImage.getHeight(), BufferedImage.TYPE_INT_ARGB
        );
        Graphics2D g2d = argbImage.createGraphics();
        g2d.drawImage(inputImage, 0, 0, null);
        g2d.dispose();

        BufferedImage croppedImage = argbImage.getSubimage(100, 100, argbImage.getWidth() - 100, argbImage.getHeight() - 100);
        WritableImage writableImage = SwingFXUtils.toFXImage(croppedImage, null);
        BufferedImage outputImage = SwingFXUtils.fromFXImage(writableImage, null);
        if (!ImageIO.write(outputImage, "png", new File("output.png"))) {
            System.out.println("boom");
        } else {
            System.out.println("done");
        }
    }
} 