public static Dimensions memoryOptimiseDimension()

in thumbnails4j-core/src/main/java/co/elastic/thumbnails4j/core/ThumbnailUtils.java [121:139]


    public static Dimensions memoryOptimiseDimension(Dimensions dimensions){
        if(dimensions.does_fit_inside(MAX_IN_MEMORY_BUFFER)){
            return dimensions;
        } else {
            double givenXYRatio = ((double) dimensions.getWidth()) / (dimensions.getHeight());
            Dimensions result = new Dimensions(dimensions.getWidth(), dimensions.getHeight());
            double destXYRatio = ((double) MAX_IN_MEMORY_BUFFER.getWidth()) / (MAX_IN_MEMORY_BUFFER.getHeight());
            if (givenXYRatio > destXYRatio) {
                // X is the limiting factor
                result.setWidth(MAX_IN_MEMORY_BUFFER.getWidth());
                result.setHeight((int)(((double) MAX_IN_MEMORY_BUFFER.getWidth()) / givenXYRatio));
            } else {
                // Y is the limiting factor
                result.setHeight(MAX_IN_MEMORY_BUFFER.getHeight());
                result.setWidth((int)(MAX_IN_MEMORY_BUFFER.getHeight() * givenXYRatio));
            }
            return result;
        }
    }