int bufferedImageType = imageTypeSpecifier.getBufferedImageType(); if (bufferedImageType == BufferedImage.TYPE_BYTE_GRAY) { param.setDestinationType(imageTypeSpecifier); break;
param.setDestinationType(reader.getImageTypes(0).next());
param.setDestinationType(reader.getImageTypes(0).next());
param.setDestinationType(reader.getImageTypes(0).next());
param.setDestinationType(reader.getImageTypes(0).next());
param.setDestinationType(reader.getImageTypes(0).next());
param.setDestinationType(reader.getRawImageType(0)); param.setDestinationType(typeSpecifier);
param.setDestinationType(reader.getImageTypes(0).next());
int bufferedImageType = imageTypeSpecifier.getBufferedImageType(); if (bufferedImageType == BufferedImage.TYPE_BYTE_GRAY) { param.setDestinationType(imageTypeSpecifier); break;
@Test public void testGetDestinationParamGoodDestinationTypeAlt() throws IIOException { ImageReadParam param = new ImageReadParam(); // In essence, this is the same as TYPE_INT_ARGB ImageTypeSpecifier type = ImageTypeSpecifier.createPacked(ColorSpace.getInstance(ColorSpace.CS_sRGB), 0xff0000, 0xff00, 0xff, 0xff000000, DataBuffer.TYPE_INT, false); param.setDestinationType(type); BufferedImage destination = ImageReaderBase.getDestination(param, TYPES.iterator(), 6, 7); assertEquals(BufferedImage.TYPE_INT_ARGB, destination.getType()); assertEquals(6, destination.getWidth()); assertEquals(7, destination.getHeight()); }
@Test(expected = IIOException.class) public void testGetDestinationParamIllegalDestinationType() throws IIOException { ImageReadParam param = new ImageReadParam(); param.setDestinationType(ImageTypeSpecifier.createFromBufferedImageType(BufferedImage.TYPE_BYTE_GRAY)); ImageReaderBase.getDestination(param, TYPES.iterator(), 6, 7); }
@Test(expected = IIOException.class) public void testGetDestinationParamIllegalDestinationTypeAlt() throws IIOException { ImageReadParam param = new ImageReadParam(); param.setDestinationType(ImageTypeSpecifier.createFromBufferedImageType(BufferedImage.TYPE_INT_BGR)); ImageReaderBase.getDestination(param, TYPES.iterator(), 6, 7); }
@Test public void testGetDestinationParamGoodDestinationType() throws IIOException { ImageReadParam param = new ImageReadParam(); param.setDestinationType(ImageTypeSpecifier.createFromBufferedImageType(BufferedImage.TYPE_INT_ARGB)); BufferedImage destination = ImageReaderBase.getDestination(param, TYPES.iterator(), 6, 7); assertEquals(BufferedImage.TYPE_INT_ARGB, destination.getType()); assertEquals(6, destination.getWidth()); assertEquals(7, destination.getHeight()); }
@Test public void testSetDestinationTypeIllegal() throws IOException { final ImageReader reader = createReader(); TestData data = getTestData().get(0); reader.setInput(data.getInputStream()); List<ImageTypeSpecifier> illegalTypes = createIllegalTypes(reader.getImageTypes(0)); ImageReadParam param = reader.getDefaultReadParam(); for (ImageTypeSpecifier illegalType : illegalTypes) { param.setDestinationType(illegalType); try { reader.read(0, param); fail("Expected to throw exception with illegal type specifier"); } catch (IIOException | IllegalArgumentException expected) { // TODO: This is thrown by ImageReader.getDestination. But are we happy with that? String message = expected.getMessage().toLowerCase(); if (!(message.contains("destination") && message.contains("type") || message.contains("num source & dest bands differ"))) { // Allow this to bubble up, due to a bug in the Sun PNGImageReader throw expected; } } } reader.dispose(); }
private ByteArrayOutputStream transcode(final ImageReader reader, final URL resource, final ImageWriter writer, int outCSType) throws IOException { try (ImageInputStream input = ImageIO.createImageInputStream(resource)) { reader.setInput(input); ImageTypeSpecifier specifier = null; Iterator<ImageTypeSpecifier> types = reader.getImageTypes(0); while (types.hasNext()) { ImageTypeSpecifier type = types.next(); if (type.getColorModel().getColorSpace().getType() == outCSType) { specifier = type; break; } } // Read image with requested color space ImageReadParam readParam = reader.getDefaultReadParam(); readParam.setSourceRegion(new Rectangle(Math.min(100, reader.getWidth(0)), Math.min(100, reader.getHeight(0)))); readParam.setDestinationType(specifier); IIOImage image = reader.readAll(0, readParam); // Write it back ByteArrayOutputStream bytes = new ByteArrayOutputStream(1024); try (ImageOutputStream output = new MemoryCacheImageOutputStream(bytes)) { writer.setOutput(output); ImageWriteParam writeParam = writer.getDefaultWriteParam(); writeParam.setDestinationType(specifier); writer.write(null, image, writeParam); return bytes; } } }
@Test public void testHasExplicitDestinationParamWithDestinationType() { ImageReadParam param = new ImageReadParam(); param.setDestinationType(ImageTypeSpecifier.createFromBufferedImageType(BufferedImage.TYPE_INT_ARGB)); assertTrue(ImageReaderBase.hasExplicitDestination(param)); }
param.setSourceRegion(new Rectangle(reader.getWidth(0), 8)); // We don't really need to read it all param.setDestinationType(cmykType); BufferedImage imageCMYK = reader.read(0, param); param.setDestinationType(rgbType); BufferedImage imageRGB = reader.read(0, param);
@Test public void testReadCMYKAsCMYK() throws IOException { // Make sure CMYK images can be read and still contain their original (embedded) color profile JPEGImageReader reader = createReader(); List<TestData> cmykData = getCMYKData(); for (TestData data : cmykData) { reader.setInput(data.getInputStream()); Iterator<ImageTypeSpecifier> types = reader.getImageTypes(0); assertTrue(data + " has no image types", types.hasNext()); ImageTypeSpecifier cmykType = null; while (types.hasNext()) { ImageTypeSpecifier type = types.next(); int csType = type.getColorModel().getColorSpace().getType(); if (csType == ColorSpace.TYPE_CMYK) { cmykType = type; break; } } assertNotNull("No CMYK types for " + data, cmykType); ImageReadParam param = reader.getDefaultReadParam(); param.setDestinationType(cmykType); param.setSourceRegion(new Rectangle(reader.getWidth(0), 8)); // We don't really need to read it all BufferedImage image = reader.read(0, param); assertNotNull(image); assertEquals(ColorSpace.TYPE_CMYK, image.getColorModel().getColorSpace().getType()); } reader.dispose(); }
ImageTypeSpecifier type = types.next(); ImageReadParam param = imageReader.getDefaultReadParam(); param.setDestinationType(type); BufferedImage image = imageReader.read(i, param);
while (types.hasNext()) { ImageTypeSpecifier type = types.next(); param.setDestinationType(type);