Package java.awt.image

Examples of java.awt.image.RescaleOp


  public void testMethod1(TestHarness harness)
  {
    harness.checkPoint("(BufferedImage)");
    BufferedImage image = new BufferedImage(10, 20,
            BufferedImage.TYPE_INT_ARGB);
    RescaleOp op = new RescaleOp(1, 1, null);
    Rectangle2D bounds = op.getBounds2D(image);
    harness.check(bounds.getWidth(), 10);
    harness.check(bounds.getHeight(), 20);
   
    // try null argument
    boolean pass = false;
    try
    {
      op.getBounds2D((BufferedImage) null);
    }
    catch (NullPointerException e)
    {
      pass = true;
    }
View Full Code Here


  }
 
  public void testMethod2(TestHarness harness)
  {
    harness.checkPoint("(Raster)");   
    RescaleOp op = new RescaleOp(1, 1, null);
    Raster raster = Raster.createWritableRaster(
            new MultiPixelPackedSampleModel(DataBuffer.TYPE_BYTE, 10, 20, 8),
            null);
    Rectangle2D bounds = op.getBounds2D(raster);
    harness.check(bounds.getWidth(), 10);
    harness.check(bounds.getHeight(), 20);
   
    // try null argument
    boolean pass = false;
    try
    {
      op.getBounds2D((Raster) null);
    }
    catch (NullPointerException e)
    {
      pass = true;
    }
View Full Code Here

    // Create an image to work on
    BufferedImage img = new BufferedImage(20, 20, BufferedImage.TYPE_USHORT_GRAY);
    WritableRaster r = img.getRaster();
    r.setSample(1, 1, 0, 150);
   
    RescaleOp op = new RescaleOp(1, 1, null);
   
    // Src and dst images can be the same
    try
    {
      op.filter(img, img);
      harness.check(true);
    }
    catch (IllegalArgumentException e)
    {
      harness.check(false);
    }
   
    // Src and dst use different colorspaces (allowed, will cause implied
    // conversion)
    BufferedImage dst = new BufferedImage(20, 20, BufferedImage.TYPE_INT_RGB);
    try
    {
      op.filter(img, dst);
      harness.check(true);
    }
    catch (IllegalArgumentException e)
    {
      harness.check(false);
    }
   
    // Src and dst are different sizes (not allowed, unlike some other Ops)
    dst = new BufferedImage(30, 40, BufferedImage.TYPE_USHORT_GRAY);
    try
    {
      op.filter(img, dst);
      harness.check(false);
    }
    catch (IllegalArgumentException e)
    {
      harness.check(true);
    }
   
    // Null destination check
    dst = op.filter(img, null);
    harness.check(dst.getType(),
                  op.createCompatibleDestImage(img, null).getType());
   
    // Test positive & negative clipping behaviour
    img.getRaster().setSample(1, 1, 0, 1500);
    op = new RescaleOp(100, 0, null);
    dst = op.filter(img, null);
    double maxValue = Math.pow(2, img.getColorModel().getComponentSize(0)) - 1;
    harness.check(dst.getRaster().getSample(1, 1, 0), maxValue);
   
    op = new RescaleOp(1, -2000, null);
    dst = op.filter(img, null);
    harness.check(dst.getRaster().getSample(1, 1, 0), 0);
  }
View Full Code Here

    r.setSample(1, 3, 0, 45);
    r.setSample(1, 3, 1, 60);
    r.setSample(1, 3, 2, 70);
    r.setSample(1, 3, 3, 90);
   
    RescaleOp op = new RescaleOp(0.75f, 25f, null);
    BufferedImage dst = op.filter(img, null);
    WritableRaster dest = dst.getRaster();
   
    harness.check(dest.getSample(1, 1, 0), 137);    //rounded down from 137.5
    harness.check(dest.getSample(1, 1, 1), 145);
   
View Full Code Here

    r.setSample(1, 3, 0, 45);
    r.setSample(1, 3, 1, 60);
    r.setSample(1, 3, 2, 70);
    r.setSample(1, 3, 3, 90);
   
    RescaleOp op = new RescaleOp(new float[]{0.75f, 2.5f, 1f},
                                 new float[]{25f, 2f, 1.5f},
                                 null);
   
    /* This causes Sun to throw an exception...
     *
     * java.lang.IllegalArgumentException: Number of channels in the src (4)
     * does not match number of channels in the destination (2)
     *
     * I'm pretty sure it's a bug, but it's not one that's worth mimicing.
     * This test will not run on Sun.
     */
    try
    {
      BufferedImage dst = op.filter(img, null);
      WritableRaster dest = dst.getRaster();
     
      harness.check(dest.getSample(1, 1, 0), 32);   //rounded down from 32.5
      harness.check(dest.getSample(1, 1, 1), 52);
     
View Full Code Here

    r.setSample(1, 3, 0, 45);
    r.setSample(1, 3, 1, 60);
    r.setSample(1, 3, 2, 70);
    r.setSample(1, 3, 3, 90);
   
    RescaleOp op = new RescaleOp(new float[]{0.75f, 2.5f, -1f, 0f},
                                 new float[]{25f, 2f, 1f, 0f},
                                 null);
    BufferedImage dst = op.filter(img, null);
    WritableRaster dest = dst.getRaster();
   
    harness.check(dest.getSample(1, 1, 0), 32);     //rounded down from 32.5
    harness.check(dest.getSample(1, 1, 1), 52);
    harness.check(dest.getSample(1, 1, 2), 0);
View Full Code Here

    r.setSample(1, 3, 1, 60);
    r.setSample(1, 3, 2, 70);
    r.setSample(1, 3, 3, 90);

    // Test mismatched arrays
    RescaleOp op = new RescaleOp(new float[]{1, 2, 3, 4}, new float[]{1, 2}, null);
    try
    {
      op.filter(img, null);
      harness.check(false);
    }
    catch (IllegalArgumentException ex)
    {
      harness.check(true);
    }
   
    // Only the first value from both arrays is read if the offsets array
    // has only one value
    op = new RescaleOp(new float[]{1, 2, 3, 4}, new float[]{1}, null);
    try
    {
      BufferedImage dst = op.filter(img, null);
      WritableRaster dest = dst.getRaster();
      harness.check(dest.getSample(1, 1, 0), 11);
      harness.check(dest.getSample(1, 1, 1), 21);
      harness.check(dest.getSample(1, 3, 0), 46);
      harness.check(dest.getSample(1, 3, 1), 61);
    }
    catch (IllegalArgumentException ex)
    {
      harness.check(false);
    }
   
    // Same with a single-length factors array
    op = new RescaleOp(new float[]{0.5f}, new float[]{2, 3, 4, 5}, null);
    try
    {
      BufferedImage dst = op.filter(img, null);
      WritableRaster dest = dst.getRaster();
      harness.check(dest.getSample(1, 1, 0), 7);
      harness.check(dest.getSample(1, 1, 1), 12);
      harness.check(dest.getSample(1, 3, 0), 24);
      harness.check(dest.getSample(1, 3, 1), 32);
View Full Code Here

  private void simpleTest(TestHarness harness)
  {
    harness.checkPoint("createCompatibleDestImage");

    // Simple test
    RescaleOp op = new RescaleOp(1, 1, null);
   
    BufferedImage img = new BufferedImage(25, 40, BufferedImage.TYPE_INT_RGB);
   
    BufferedImage dest = op.createCompatibleDestImage(img, img.getColorModel());
   
    harness.check(dest.getHeight(), 40);
    harness.check(dest.getWidth(), 25);
    harness.check(dest.getColorModel(), img.getColorModel());
   
    // Try a different colour model
    img = new BufferedImage(25, 40, BufferedImage.TYPE_INT_RGB);
    DirectColorModel cm = new DirectColorModel(16, 0x0f00, 0x00f0, 0x000f);
    dest = op.createCompatibleDestImage(img, cm);
   
    harness.check(dest.getHeight(), 40);
    harness.check(dest.getWidth(), 25);
    harness.check(dest.getColorModel(), cm);
  }
View Full Code Here

  }
 
  // Test all the default color models
  private void colorModelTest(TestHarness harness)
  {
    RescaleOp op = new RescaleOp(1, 1, null);

    int[] types = {BufferedImage.TYPE_INT_RGB,
                   BufferedImage.TYPE_INT_ARGB,
                   BufferedImage.TYPE_INT_ARGB_PRE,
                   BufferedImage.TYPE_3BYTE_BGR,
                   BufferedImage.TYPE_4BYTE_ABGR,
                   BufferedImage.TYPE_4BYTE_ABGR_PRE,
                   BufferedImage.TYPE_USHORT_565_RGB,
                   BufferedImage.TYPE_USHORT_555_RGB,
                   BufferedImage.TYPE_BYTE_GRAY,
                   BufferedImage.TYPE_USHORT_GRAY};
    // Skipped types that are not implemented yet:
    // TYPE_CUSTOM, TYPE_INT_BGR, TYPE_BYTE_BINARY, TYPE_BYTE_INDEXED

    for (int i = 0; i < types.length; i++)
      {
        int type = types[i];
        harness.checkPoint("type: " + type);
       
        BufferedImage img = new BufferedImage(25, 40, type);
        BufferedImage dest = op.createCompatibleDestImage(img, null);
       
        // Unlike most Ops, this one creates a clone of the original image
        harness.check(dest.getColorModel().getPixelSize(),
                      img.getColorModel().getPixelSize());
        harness.check(dest.getColorModel().getTransferType(), img.getColorModel().getTransferType());
View Full Code Here

    harness.checkPoint("(float[], float[], RenderingHints)");

    // Simple test
    float[] scale = new float[] {0.6f};
    float[] offset = new float[] {1.1f};
    RescaleOp op = new RescaleOp(scale, offset, null);
   
    harness.check(Arrays.equals(op.getScaleFactors(null), scale));
    harness.check(Arrays.equals(op.getOffsets(null), offset));
   
    harness.check(op.getRenderingHints(), null);

    scale = new float[] {0.6f, 1.2f, 5.6f, 2.2f};
    offset = new float[] {1.1f, 3f, 2.7f, 8.0f};
    op = new RescaleOp(scale, offset, null);
   
    harness.check(Arrays.equals(op.getScaleFactors(null), scale));
    harness.check(Arrays.equals(op.getOffsets(null), offset));
    harness.check(op.getRenderingHints(), null);

    // Null arguments
    try
    {
      op = new RescaleOp(null, offset, null);
      harness.check(false);
    }
    catch (NullPointerException e)
    {
      harness.check(true);
    }
   
    try
    {
      op = new RescaleOp(scale, null, null);
      harness.check(false);
    }
    catch (NullPointerException e)
    {
      harness.check(true);
    }
   
    try
    {
      op = new RescaleOp(null, null, null);
      harness.check(false);
    }
    catch (NullPointerException e)
    {
      harness.check(true);
    }
   
    // Empty arrays
    try
    {
      op = new RescaleOp(new float[]{}, new float[]{}, null);
      harness.check(true);
    }
    catch (NullPointerException e)
    {
      harness.check(false);
    }
   
    // Mis-matched array lengths are allowed for now
    scale = new float[] {1f, 2f, 3f, 4f, 5f, 6f};
    offset = new float[] {1f, 2f, 3f};
    try
    {
      op = new RescaleOp(scale, offset, null);
      harness.check(true);
    }
    catch (IllegalArgumentException ex)
    {
      harness.check(false);
    }
   
    // Negative values
    scale = new float[] {1f, -2f};
    offset = new float[] {2f, -1f,};
    try
    {
      op = new RescaleOp(scale, offset, null);
      harness.check(true);
    }
    catch (IllegalArgumentException ex)
    {
      harness.check(false);
View Full Code Here

TOP

Related Classes of java.awt.image.RescaleOp

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.