per il ridimensionamento delle immagini puoi usare le BufferedImage e le AffineTransform del package java.awt.image

codice:
AffineTransform tx = new AffineTransform();
double scalex = 0.5;     //dimezziamo l'immagine
double scaley = 0.5;
tx.scale(scalex, scaley);
    
AffineTransformOp op = new AffineTransformOp(tx, AffineTransformOp.TYPE_BILINEAR);
//bufferedImage rappresenta la tua immagine
bufferedImage = op.filter(bufferedImage, null);
Ora non ti resta che salvare l'immagine