/** * 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(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(); }
@Ignore("Bug in Toolkit") @Test(timeout = 1000, expected = ImageConversionException.class) public void testGetBufferedImageErrorSourceString() { Image source = Toolkit.getDefaultToolkit().createImage((String) null); BufferedImageFactory factory = new BufferedImageFactory(source); factory.getBufferedImage(); }
@Test public void testGetBufferedImageJPEG() { URL resource = getClass().getResource("/sunflower.jpg"); assertNotNull(resource); Image source = Toolkit.getDefaultToolkit().createImage(resource); assertNotNull(source); BufferedImageFactory factory = new BufferedImageFactory(source); BufferedImage image = factory.getBufferedImage(); assertEquals(187, image.getWidth()); assertEquals(283, image.getHeight()); }
@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 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 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 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); }
@Test public void testGetBufferedImageGIF() { URL resource = getClass().getResource("/tux.gif"); assertNotNull(resource); Image source = Toolkit.getDefaultToolkit().createImage(resource); assertNotNull(source); BufferedImageFactory factory = new BufferedImageFactory(source); BufferedImage image = factory.getBufferedImage(); assertEquals(250, image.getWidth()); assertEquals(250, image.getHeight()); assertEquals(Transparency.BITMASK, image.getTransparency()); // All corners of image should be fully transparent assertEquals(0, image.getRGB(0, 0) >>> 24); assertEquals(0, image.getRGB(249, 0) >>> 24); assertEquals(0, image.getRGB(0, 249) >>> 24); assertEquals(0, image.getRGB(249, 249) >>> 24); }
@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); }
@Test public void testRemoveNullListener() { 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(null); factory.getBufferedImage(); listener.verify(100); }
@Test public void testRemoveNotAdddedListener() { 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(new BufferedImageFactory.ProgressListener() { public void progress(BufferedImageFactory pFactory, float pPercentage) { } }); factory.getBufferedImage(); listener.verify(100); }
@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); }
@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); }
image = factory.getBufferedImage();
@Test(timeout = 2000, expected = ImageConversionException.class) public void testGetBufferedImageErrorSourceURL() { Image source = Toolkit.getDefaultToolkit().createImage(getClass().getResource("/META-INF/MANIFEST.MF")); BufferedImageFactory factory = new BufferedImageFactory(source); factory.getBufferedImage(); }
@Ignore("Bug in Toolkit") @Test(timeout = 1000, expected = ImageConversionException.class) public void testGetBufferedImageErrorSourceString() { Image source = Toolkit.getDefaultToolkit().createImage((String) null); BufferedImageFactory factory = new BufferedImageFactory(source); factory.getBufferedImage(); }
@Test public void testGetBufferedImageJPEG() { URL resource = getClass().getResource("/sunflower.jpg"); assertNotNull(resource); Image source = Toolkit.getDefaultToolkit().createImage(resource); assertNotNull(source); BufferedImageFactory factory = new BufferedImageFactory(source); BufferedImage image = factory.getBufferedImage(); assertEquals(187, image.getWidth()); assertEquals(283, image.getHeight()); }
@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); }
@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); }