@Test public void testRemoveListener() { URL resource = getClass().getResource("/sunflower.jpg"); assertNotNull(resource); Image source = Toolkit.getDefaultToolkit().createImage(resource); assertNotNull(source); BufferedImageFactory factory = new BufferedImageFactory(source); VerifyingListener listener = new VerifyingListener(factory); factory.addProgressListener(listener); factory.removeProgressListener(listener); factory.getBufferedImage(); listener.verify(0); }
BufferedImageFactory factory = new BufferedImageFactory(pImage); cm = factory.getColorModel();
/** * Converts the {@code Image} to a {@code BufferedImage}. * The new image will have the same {@code ColorModel}, {@code Raster} and * properties as the original image, if possible. * <p/> * If the image is already a {@code BufferedImage}, it is simply returned * and no conversion takes place. * * @param pOriginal the image to convert. * * @return a {@code BufferedImage} * * @throws IllegalArgumentException if {@code pOriginal == null} * @throws ImageConversionException if the image cannot be converted */ public static BufferedImage toBuffered(Image pOriginal) { // Don't convert if it already is BufferedImage if (pOriginal instanceof BufferedImage) { return (BufferedImage) pOriginal; } if (pOriginal == null) { throw new IllegalArgumentException("original == null"); } //System.out.println("--> Doing full BufferedImage conversion..."); BufferedImageFactory factory = new BufferedImageFactory(pOriginal); return factory.getBufferedImage(); }
@Test public void testListener() { URL resource = getClass().getResource("/sunflower.jpg"); assertNotNull(resource); Image source = Toolkit.getDefaultToolkit().createImage(resource); assertNotNull(source); BufferedImageFactory factory = new BufferedImageFactory(source); VerifyingListener listener = new VerifyingListener(factory); factory.addProgressListener(listener); factory.getBufferedImage(); listener.verify(100f); }
BufferedImageFactory factory = new BufferedImageFactory(pImage); ColorModel cm = factory.getColorModel(); image = factory.getBufferedImage();
@Test public void testRemoveAllListeners() { URL resource = getClass().getResource("/sunflower.jpg"); assertNotNull(resource); Image source = Toolkit.getDefaultToolkit().createImage(resource); assertNotNull(source); BufferedImageFactory factory = new BufferedImageFactory(source); VerifyingListener listener = new VerifyingListener(factory); VerifyingListener listener2 = new VerifyingListener(factory); factory.addProgressListener(listener); factory.addProgressListener(listener); factory.addProgressListener(listener2); factory.removeAllProgressListeners(); factory.getBufferedImage(); listener.verify(0); listener2.verify(0); }
@Test public void testGetBufferedImageSubsampledSourceRegion() throws Exception{ URL resource = getClass().getResource("/sunflower.jpg"); assertNotNull(resource); Image source = Toolkit.getDefaultToolkit().createImage(resource); assertNotNull(source); BufferedImageFactory factory = new BufferedImageFactory(source); BufferedImage original = factory.getBufferedImage(); factory.setSourceRegion(new Rectangle(40, 40, 40, 40)); factory.setSourceSubsampling(2, 2); BufferedImage image = factory.getBufferedImage(); // Accidentally also tests reuse... assertEquals(20, image.getWidth()); assertEquals(20, image.getHeight()); for (int y = 0; y < image.getHeight(); y++) { for (int x = 0; x < image.getWidth(); x++) { assertEquals("RGB[" + x + ", " + y + "]", original.getRGB(40 + x * 2, 40 + y * 2), image.getRGB(x, y)); } } }
@Test public void testGetBufferedImageSourceRegion() { URL resource = getClass().getResource("/sunflower.jpg"); assertNotNull(resource); Image source = Toolkit.getDefaultToolkit().createImage(resource); assertNotNull(source); BufferedImageFactory factory = new BufferedImageFactory(source); BufferedImage original = factory.getBufferedImage(); factory.setSourceRegion(new Rectangle(40, 40, 40, 40)); BufferedImage image = factory.getBufferedImage(); // Accidentally also tests reuse... assertEquals(40, image.getWidth()); assertEquals(40, image.getHeight()); for (int y = 0; y < image.getHeight(); y++) { for (int x = 0; x < image.getWidth(); x++) { assertEquals("RGB[" + x + ", " + y + "]", original.getRGB(40 + x, 40 + y), image.getRGB(x, y)); } } }
@Test public void testGetBufferedImageSubsampled() { URL resource = getClass().getResource("/sunflower.jpg"); assertNotNull(resource); Image source = Toolkit.getDefaultToolkit().createImage(resource); assertNotNull(source); BufferedImageFactory factory = new BufferedImageFactory(source); BufferedImage original = factory.getBufferedImage(); factory.setSourceSubsampling(2, 2); BufferedImage image = factory.getBufferedImage(); // Accidentally also tests reuse... // Values rounded up assertEquals(94, image.getWidth()); assertEquals(142, image.getHeight()); for (int y = 0; y < image.getHeight(); y++) { for (int x = 0; x < image.getWidth(); x++) { assertEquals("RGB[" + x + ", " + y + "]", original.getRGB(x * 2, y * 2), image.getRGB(x, y)); } } }
@Test(expected = IllegalArgumentException.class) public void testGetBufferedImageErrorSourceImageProducer() { Image source = Toolkit.getDefaultToolkit().createImage((ImageProducer) null); new BufferedImageFactory(source); }
/** * Frees resources used by this {@code BufferedImageFactory}. */ public void dispose() { freeResources(); buffered = null; colorModel = null; }
/** * Returns the {@code BufferedImage} extracted from the given * {@code ImageSource}. Multiple requests will return the same image. * * @return the {@code BufferedImage} * * @throws ImageConversionException if the given {@code ImageSource} cannot * be converted for some reason. */ public BufferedImage getBufferedImage() throws ImageConversionException { doFetch(false); return buffered; }
/** * Sets the source region (AOI) for the new image. * * @param pRegion the source region */ public void setSourceRegion(final Rectangle pRegion) { // Re-fetch everything, if region changed if (x != pRegion.x || y != pRegion.y || width != pRegion.width || height != pRegion.height) { dispose(); } x = pRegion.x; y = pRegion.y; width = pRegion.width; height = pRegion.height; }
public void progress(BufferedImageFactory pFactory, float pPercentage) { if (pPercentage > 5) { pFactory.abort(); } } });
@Test(timeout = 1000, expected = ImageConversionException.class) public void testGetBufferedImageErrorSourceURL() { Image source = Toolkit.getDefaultToolkit().createImage(getClass().getResource("/META-INF/MANIFEST.MF")); BufferedImageFactory factory = new BufferedImageFactory(source); factory.getBufferedImage(); }
@Test public void testAbort() throws Exception { URL resource = getClass().getResource("/sunflower.jpg"); assertNotNull(resource); Image source = Toolkit.getDefaultToolkit().createImage(resource); assertNotNull(source); final BufferedImageFactory factory = new BufferedImageFactory(source); // Listener should abort ASAP factory.addProgressListener(new BufferedImageFactory.ProgressListener() { public void progress(BufferedImageFactory pFactory, float pPercentage) { if (pPercentage > 5) { pFactory.abort(); } } }); BufferedImage image = factory.getBufferedImage(); assertEquals(187, image.getWidth()); assertEquals(283, image.getHeight()); // Upper right should be loaded assertEquals((image.getRGB(186, 0) & 0xFF0000) >> 16 , 0x68, 10); assertEquals((image.getRGB(186, 0) & 0xFF00) >> 8, 0x91, 10); assertEquals(image.getRGB(186, 0) & 0xFF, 0xE0, 10); // Lower right should be blank assertEquals(image.getRGB(186, 282) & 0xFFFFFF, 0); }
BufferedImageFactory factory = new BufferedImageFactory(pImage); ColorModel cm = factory.getColorModel(); image = factory.getBufferedImage();
@Test public void testRemoveAllListeners() { URL resource = getClass().getResource("/sunflower.jpg"); assertNotNull(resource); Image source = Toolkit.getDefaultToolkit().createImage(resource); assertNotNull(source); BufferedImageFactory factory = new BufferedImageFactory(source); VerifyingListener listener = new VerifyingListener(factory); VerifyingListener listener2 = new VerifyingListener(factory); factory.addProgressListener(listener); factory.addProgressListener(listener); factory.addProgressListener(listener2); factory.removeAllProgressListeners(); factory.getBufferedImage(); listener.verify(0); listener2.verify(0); }
@Test public void testGetBufferedImageSubsampledSourceRegion() throws Exception{ URL resource = getClass().getResource("/sunflower.jpg"); assertNotNull(resource); Image source = Toolkit.getDefaultToolkit().createImage(resource); assertNotNull(source); BufferedImageFactory factory = new BufferedImageFactory(source); BufferedImage original = factory.getBufferedImage(); factory.setSourceRegion(new Rectangle(40, 40, 40, 40)); factory.setSourceSubsampling(2, 2); BufferedImage image = factory.getBufferedImage(); // Accidentally also tests reuse... assertEquals(20, image.getWidth()); assertEquals(20, image.getHeight()); for (int y = 0; y < image.getHeight(); y++) { for (int x = 0; x < image.getWidth(); x++) { assertEquals("RGB[" + x + ", " + y + "]", original.getRGB(40 + x * 2, 40 + y * 2), image.getRGB(x, y)); } } }