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