United StatesChange Country, Oracle Worldwide Web Sites Communities I am a... I want to...
JDK-4671586 : Image corruption using ReplicateScaleFilter/AreaAveragingScaleFilter

Details
Type:
Bug
Submit Date:
2002-04-19
Status:
Resolved
Updated Date:
2002-10-09
Project Name:
JDK
Resolved Date:
2002-08-14
Component:
client-libs
OS:
solaris_7
Sub-Component:
2d
CPU:
sparc
Priority:
P2
Resolution:
Fixed
Affected Versions:
1.3.1
Fixed Versions:
1.3.1_05 (05)

Related Reports
Backport:
Backport:

Sub Tasks

Description
Attached is a  test case here which uses primarily ReplicateScaleFiliter()
and AreaAveragingScaleFilter() to scale and smooth 'Fujitsu' logo.  We
seem to get image corruption at the end of this scaling and smoothing
process.

This image corruption happens more often on Solaris than on Windows.
Also on Windows, CPU peaks for couple of minutes whenever there is a
resize.

To reproduce the problem,

-Run java -jar corrupt.jar
Wait till you see the smooth image.
Resize (vertically ).
Initially you will see the logo with jagged edges and after sometime the
image gets smooth. If there is any image corruption you would see it
now.


Note: Only the top portion ( infinity logo ) takes part in the
scaling/smoothing. The bottom portion of the image  ( the line and the
text ) does not participate in scaling/smoothing.

Source and class files are in the jar 'corrupt.jar'.

                                    

Comments
CONVERTED DATA

BugTraq+ Release Management Values

COMMIT TO FIX:
1.3.1_05
1.4.0_03
mantis

FIXED IN:
1.3.1_05
1.4.0_03
mantis

INTEGRATED IN:
1.3.1_05
1.4.0_03
mantis
mantis-b04


                                     
2004-06-14
WORK AROUND

none
                                     
2004-06-11
SUGGESTED FIX

the following change (suggested by Jim Graham)
has been put back to 1.3.1_05 patch

------- InputStreamImageSource.java -------
*** /tmp/geta22366      Mon Aug 19 14:55:29 2002
--- /tmp/getb22366      Mon Aug 19 14:55:29 2002
***************
*** 135,143 ****
            id.removeConsumer(ic);
        }
        consumers = ImageConsumerQueue.removeConsumer(consumers, ic, false);
-       if (consumers == null) {
-           stopProduction();
-       }
      }
  
      public void startProduction(ImageConsumer ic) {
--- 135,140 ----
***************
*** 405,407 ****
--- 402,405 ----
        }
      }
  }

###@###.### 2002-08-19
                                     
2002-08-19
EVALUATION

As described in the comments/suggested fix fields.
###@###.### 2002-05-28
                                     
2002-05-28



Hardware and Software, Engineered to Work Together