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);
 }