The rendering core by default will preserve image quality and draw images as they were intended by the original author. The only exception to this rule will occur if the JVM does not have enough memory to load an image, at which time the rendering core will try to compensate by scaling the image to a smaller size in an attempt to display the image using a smaller memory foot print.
The imaging core can be configured to scale images. Image scaling in some cases can reduce the amount of memory used by the rendering core but can also results in a lose of image quality. The following table describes the three different types of images scaling available in the imaging core.
|org.icepdf.core.imageReference||default||Image proxy implementation, no image scaling takes place (Default).|
|org.icepdf.core.imageReference||scaled||Image proxy implementation but will also scale images with the intent of saving the amount of memory used to display an image. Images less then 1000 pixels in width are not scaled.|
|org.icepdf.core.imageReference||mipmap||Mipmap implementation and image proxy which will create a series of scaled images, displaying the smaller version at small zoom values and the larger image at large zoom values.|
The Image pool is a Map of the most recently used images. The pools size by default is setup to be 1/4 the heap size. So as the pool grows it will self trim to keep the memory foot print at the specified max. The max pool size can be specified by using the org.icepdf.core.views.imagePoolSize system property. The value is specified in MB.