Details
-
Type: Bug
-
Status: Closed
-
Priority: Major
-
Resolution: Fixed
-
Affects Version/s: 5.0.2
-
Fix Version/s: 5.0.3
-
Component/s: Core/Parsing
-
Labels:None
-
Environment:any
Description
When an image is drawn by the ImageReference class there is a catch for Throwable, generally the only way to get to the catch is a out of memory error. A client submited a file that looked considerably better when rendering using a restricted memory which caused the catch clause to execute.
In this catch clause the image is scaled in size using a very simple algorithm. The interesting thing about the scale is that it uses surprising little memory and the next call to paint generally executes correctly.
In this catch clause the image is scaled in size using a very simple algorithm. The interesting thing about the scale is that it uses surprising little memory and the next call to paint generally executes correctly.
The algorithm is quite simple
if (width > 1000 && width < 2000)
{ width = 1000; }else if (width > 2000)
{ width = 2000; }scaledImage = image.getScaledInstance(
width, -1, Image.SCALE_SMOOTH);
But the net effect can be a significant reduction in memory consumption during the paint. I expect this algorithm to be improved over time.