Just resize image when uploading
public String handleImageFileUpload(FileUploadEvent event){
File file = new File("PATH_TO_UPLOAD_DIR");
file.mkdirs();
file = new File("PATH_TO_UPLOAD_FILE");
try( InputStream is = event.getFile().getInputstream();
OutputStream out = new FileOutputStream(file) ) {
BufferedImage img = ImageIO.read(is);
BufferedImage scaledImg;
if(img.getWidth() >= img.getHeight())
scaledImg = Scalr.resize(img, Scalr.Method.ULTRA_QUALITY, Scalr.Mode.FIT_TO_HEIGHT, 300, 400);
else
scaledImg = Scalr.resize(img, Scalr.Method.ULTRA_QUALITY, Scalr.Mode.FIT_TO_WIDTH, 400, 300);
ImageIO.write(scaledImg, "jpg", out);
} catch (IOException e) {
e.printStackTrace();
}
}