Per quanto riguarda la dimensione, puoi fare così:
Codice PHP:
BufferedImage src = ImageIO.read(new File("fileSorgente.jpg"));
double destWidth = 400; //le dimensioni finali
double destHeight = 300; //le dimensioni finali
BufferedImage dest = new BufferedImage(destWidth, destHeight, BufferedImage.TYPE_INT_RGB);
Graphics2D g = dest.createGraphics();
AffineTransform at = AffineTransform.getScaleInstance((double) destWidth / src.getWidth(), (double) destHeight / src.getHeight());
g.drawRenderedImage(src, at);
ImageIO.write(dest, "JPG", new File("fileDestinazione.jpg"));