Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-4090817

awt.Graphics2D.drawImage() - sometimes gives out of memory (no

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: P3 P3
    • 1.2.0
    • 1.2.0
    • client-libs
    • 2d
    • 1.2beta2
    • x86
    • windows_nt
    • Not verified



      Name: ggC50526 Date: 11/05/97


      Using NT on a P200 with 64 megs of ram:

      The following code will SOMETIMES throw an out of memory exception..have not
      been able to find a
      common denominator..sometimes the same code works, sometimes it does not.

      BufferedImage bi=new BufferedImage(100,100,BufferedImage.TYPE_INT_ARGB);
      AffineTransform[] transforms;
      String[]
      transformStr={"IDENTITY","TRANSLATION","SCALE","ROTATION","SHEAR"};
      void createTestTransforms() {
      transforms=new AffineTransform[5];
      transforms[0]=new AffineTransform();
      transforms[1]=new AffineTransform();
      transforms[1].setToTranslation(100f,100f);
      transforms[2]=new AffineTransform();
      transforms[2].setToScale(100f,100f);
      transforms[3]=new AffineTransform();
      transforms[3].setToRotation(Math.PI/2f);
      transforms[4]=new AffineTransform();
      double[][] matrix=new double[3][3];
      transforms[4].getMatrix(matrix);
      matrix[1][0]=5.0;
      transforms[4]=new AffineTransform(matrix);
      }

      Graphics2D g=bi.createGraphics();
      Image img=new BufferedImage(50,50,BufferedImage.TYPE_INT_ARGB);
      createTestTransforms();
      for ( int i=0;i<transforms.length ;i++ ) {
        g.drawImage(img,transforms[i],null);
      }

      }
      =====================================
      ###@###.### Nov.05/1997
      Here is the test case from the email corespodence :

      Aaron wrote:

      Follow a test that throws OutOfMemoryExceptions on all machines I have
      tried it on (All NT4.0 SP3...between 48 and 128 megs of ram)

      // --------------------------------------------------------------
      // imports ...
      import java.awt.Graphics2D;
      import java.awt.image.BufferedImage;
      import java.awt.geom.Rectangle2D;
      import java.awt.image.BilinearAffineTransformOp;
      import java.awt.geom.AffineTransform;
      import java.awt.Shape;
      import java.awt.Image;
      import java.awt.font.StyledString;
      import java.awt.Font;
      import java.awt.font.GlyphSet;
      import java.awt.font.TextLayout;
      import java.awt.Color;
      import java.awt.AlphaComposite;
      import java.awt.GradientPaint;
      import java.awt.Paint;
      import java.awt.Paint;
      import java.awt.TexturePaint;
      import java.awt.Composite;
      import java.awt.Stroke;
      import java.awt.BasicStroke;
      import java.awt.Rectangle;

      public class DrawImageTest {
        // --------------------------------------------------------------
        // Variables
        // --------------------------------------------------------------

      AffineTransform[] transforms;
      String[]
      transformStr={"IDENTITY","TRANSLATION","SCALE","ROTATION","SHEAR"};
      void createTestTransforms() {
      transforms=new AffineTransform[5];
      transforms[0]=new AffineTransform();
      transforms[1]=new AffineTransform();
      transforms[1].setToTranslation(100f,100f);
      transforms[2]=new AffineTransform();
      transforms[2].setToScale(100f,100f);
      transforms[3]=new AffineTransform();
      transforms[3].setToRotation(Math.PI/2f);
      transforms[4]=new AffineTransform();
      double[][] matrix=new double[3][3];
      transforms[4].getMatrix(matrix);
      matrix[1][0]=5.0;
      transforms[4]=new AffineTransform(matrix);
      }


        public static void main (String args[]) {
         DrawImageTest test = new DrawImageTest();
         test.doTests();


        }

        public void doTests() {

      String apiTested =
      "Graphics2D.drawImage(BufferedImage,BufferedImageOp,int,int): ";
      String msg = apiTested;

         BufferedImage bi=new BufferedImage(100,100,BufferedImage.TYPE_INT_ARGB);

         try {
           Graphics2D g = bi.createGraphics();
           Image img=new BufferedImage(50,50,BufferedImage.TYPE_INT_ARGB);
      createTestTransforms();
      for ( int i=0;i<transforms.length ;i++ ) {
      g.drawImage(img,transforms[i],null);
      }
      } catch (Throwable ee) {
      System.out.println("Throwable: " + ee);
      }


        // --------------------------------------------------------------
        /** Test: Graphics2D.drawImage(Image,AffineTransform,ImageObserver).
         *
         */
        //-----------------------------------------------------------------

      try {
           Graphics2D g=bi.createGraphics();
           BufferedImage img=new BufferedImage(50,50,BufferedImage.TYPE_INT_ARGB);
      createTestTransforms();
      for ( int i=0;i<transforms.length ;i++ ) {
           g.drawImage(img,transforms[i],null);
      }
      } catch (Throwable ee) {
      System.out.println("Throwable: " + ee);
      }

        }


      }

      (Review ID: 19537)
      ======================================================================

            jehung Jeannette Hung (Inactive)
            ggrahamsunw Gregory Graham (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: