|
Quick Lists
|
|
Bug ID:
|
6793818
|
|
Votes
|
0
|
|
Synopsis
|
JpegImageReader is too greedy creating color profiles
|
|
Category
|
java:imageio
|
|
Reported Against
|
|
|
Release Fixed
|
6u14(b01),
7(b54) (Bug ID:2172112)
|
|
State
|
11-Closed,
Verified,
request for enhancement
|
|
Priority:
|
3-Medium
|
|
Related Bugs
|
|
|
Submit Date
|
14-JAN-2009
|
|
Description
|
Greedy creation of color profiles means that profile data files loaded and CMM library is initialized.
JPEG images without embedded color profiles are read without performing color conversion
and in these cases CMM library is not needed. We should be avoiding extra work on startup
(and this also helps to loose dependencies between kernel bundles and in the future JDK7 modules)
Here is sample stacktrace:
java.lang.Exception: CMM!
at sun.awt.color.CMM.<clinit>(CMM.java:114)
at java.awt.color.ICC_Profile.activateDeferredProfile(ICC_Profile.java:1072)
at java.awt.color.ICC_Profile$1.activate(ICC_Profile.java:723)
at sun.awt.color.ProfileDeferralMgr.activateProfiles(ProfileDeferralMgr.java:75)
at java.awt.color.ICC_Profile.getInstance(ICC_Profile.java:756)
at java.awt.color.ICC_Profile.getInstance(ICC_Profile.java:976)
at java.awt.color.ICC_Profile.getInstance(ICC_Profile.java:941)
at java.awt.color.ICC_Profile$2.run(ICC_Profile.java:892)
at java.security.AccessController.doPrivileged(Native Method)
at java.awt.color.ICC_Profile.getStandardProfile(ICC_Profile.java:887)
at java.awt.color.ICC_Profile.getInstance(ICC_Profile.java:858)
at java.awt.color.ColorSpace.getInstance(ColorSpace.java:315)
at javax.imageio.ImageTypeSpecifier$Grayscale.<init>(ImageTypeSpecifier.java:587)
at javax.imageio.ImageTypeSpecifier.createGrayscale(ImageTypeSpecifier.java:668)
at javax.imageio.ImageTypeSpecifier.createSpecifier(ImageTypeSpecifier.java:1184)
at javax.imageio.ImageTypeSpecifier.getSpecifier(ImageTypeSpecifier.java:1101)
at javax.imageio.ImageTypeSpecifier.createFromBufferedImageType(ImageTypeSpecifier.java:884)
at com.sun.imageio.plugins.jpeg.JPEGImageReader.<clinit>(JPEGImageReader.java:208)
at com.sun.imageio.plugins.jpeg.JPEGImageReaderSpi.createReaderInstance(JPEGImageReaderSpi.java:67)
at javax.imageio.spi.ImageReaderSpi.createReaderInstance(ImageReaderSpi.java:296)
at javax.imageio.ImageIO$ImageReaderIterator.next(ImageIO.java:503)
at javax.imageio.ImageIO$ImageReaderIterator.next(ImageIO.java:487)
Posted Date : 2009-01-14 19:30:22.0
|
|
Work Around
|
N/A
|
|
Evaluation
|
We should use deferred loading not only for sRGB, but for
all standard profiles in the JRE. In particular case of the
jpeg plugin we are interested primarily in GRAY and PYCC profiles,
but there is no reason why the deferral loading can not be used
for CIEXYZ and linear RGB as well.
This change does not introduce any difference in the jre
behavior (except deferral profile data loading) if all
standard profiles are correctly installed in the jre:
any profile-related activity (like a color conversion,
profile data accesses and etc.) triggers profile activation.
Posted Date : 2009-01-23 17:33:25.0
|
|
Comments
|
PLEASE NOTE: JDK6 is formerly known as Project Mustang
|
|
|
 |