static BufferedImage scaleBufferedImageToMaxWidthOrHeight(WidthAndHeight size, BufferedImage img) { ret img == null ?: scaleBufferedImageToMaxWidthOrHeight(size.w(), size.h(), img); } static BufferedImage scaleBufferedImageToMaxWidthOrHeight(int maxW, int maxH default maxW, BufferedImage img) { if (img == null) null; int w = img.getWidth(), h = img.getHeight(); if (w <= maxW && h <= maxH) ret img; double scale = min(doubleRatio(maxW, w), doubleRatio(maxH, h)); ret scaleImage(img, scale); } static BufferedImage scaleBufferedImageToMaxWidthOrHeight(BufferedImage img, int max) { ret scaleBufferedImageToMaxWidthOrHeight(max, img); }