public File compressed(File file, RCompress compress, String name) throws IOException { if (null == file || null == compress) { return null; } Image image = ImageIO.read(file); if (null == image) { return null; } if (-1 == image.getWidth(null)) { return null; } if (compress.isProportion()) { double rate1 = ((double) image.getWidth(null)) / (double) compress.getWidth() + 0.1; double rate2 = ((double) image.getHeight(null)) / (double) compress.getHeight() + 0.1; double rate = rate1 > rate2 ? rate1 : rate2; compress.setWidth((int) (((double) image.getWidth(null)) / rate)); compress.setHeight((int) (((double) image.getHeight(null)) / rate)); } return this.compressed(image, compress, name); }