类javax.imageio.ImageReader源码实例Demo

下面列出了怎么用javax.imageio.ImageReader的API类实例代码及写法,或者点击链接到github查看源代码。

源代码1 项目: jdk8u_jdk   文件: InputImageTests.java
public void runTest(Object ctx, int numReps) {
    final Context ictx = (Context)ctx;
    final ImageReader reader = ictx.reader;
    final boolean seekForwardOnly = ictx.seekForwardOnly;
    final boolean ignoreMetadata = ictx.ignoreMetadata;
    do {
        try {
            ImageInputStream iis = ictx.createImageInputStream();
            reader.setInput(iis, seekForwardOnly, ignoreMetadata);
            reader.read(0);
            reader.reset();
            iis.close();
            ictx.closeOriginalStream();
        } catch (IOException e) {
            e.printStackTrace();
        }
    } while (--numReps >= 0);
}
 
源代码2 项目: openjdk-jdk8u   文件: TruncatedImageWarningTest.java
public static void main(String[] args) throws IOException {

        String sep = System.getProperty("file.separator");
        String dir = System.getProperty("test.src", ".");
        String filePath = dir+sep+fileName;
        System.out.println("Test file: " + filePath);
        File f = new File(filePath);
        ImageInputStream in = ImageIO.createImageInputStream(f);
        ImageReader reader = ImageIO.getImageReaders(in).next();
        TruncatedImageWarningTest twt = new TruncatedImageWarningTest();
        reader.addIIOReadWarningListener(twt);
        reader.setInput(in);
        reader.read(0);
        if (!twt.receivedWarning) {
            throw new RuntimeException("No expected warning");
        }
    }
 
源代码3 项目: dragonwell8_jdk   文件: InputImageTests.java
public void runTest(Object ctx, int numReps) {
    final Context ictx = (Context)ctx;
    final ImageReader reader = ictx.reader;
    final boolean seekForwardOnly = ictx.seekForwardOnly;
    final boolean ignoreMetadata = ictx.ignoreMetadata;
    do {
        try {
            ImageInputStream iis = ictx.createImageInputStream();
            reader.setInput(iis, seekForwardOnly, ignoreMetadata);
            reader.read(0);
            reader.reset();
            iis.close();
            ictx.closeOriginalStream();
        } catch (IOException e) {
            e.printStackTrace();
        }
    } while (--numReps >= 0);
}
 
/**
 * Load a multi-page TIFF image and split it into its individual pages.
 */
@Test
public void testExtractPagesFromMultiPageTiffCompression4() throws Exception {

    File sourceImageFile = getImageFile("tiff", "test-multi-gray-compression-type-4.tiff");
    ImageInputStream is = ImageIO.createImageInputStream(sourceImageFile);

    // get the first matching reader
    Iterator<ImageReader> iterator = ImageIO.getImageReaders(is);
    ImageReader imageReader = iterator.next();
    imageReader.setInput(is);

    // split the multi-page TIFF
    int pages = imageReader.getNumImages(true);
    for (int i = 0; i < pages; i++) {
        BufferedImage bufferedImage = imageReader.read(i);
        assertValidBufferedImage(bufferedImage);
    }

    assertEquals("Expect to have 2 pages", 2, pages);
}
 
源代码5 项目: jdk8u-dev-jdk   文件: InputImageTests.java
public void runTest(Object ctx, int numReps) {
    final Context ictx = (Context)ctx;
    final ImageReader reader = ictx.reader;
    final boolean seekForwardOnly = ictx.seekForwardOnly;
    final boolean ignoreMetadata = ictx.ignoreMetadata;
    do {
        try {
            ImageInputStream iis = ictx.createImageInputStream();
            reader.setInput(iis, seekForwardOnly, ignoreMetadata);
            reader.getImageMetadata(0);
            reader.reset();
            iis.close();
            ictx.closeOriginalStream();
        } catch (IOException e) {
            e.printStackTrace();
        }
    } while (--numReps >= 0);
}
 
源代码6 项目: CodenameOne   文件: AnimationImpl.java
public static Point getPixelOffsets(ImageReader reader, int num) throws IOException {
    IIOMetadata meta = reader.getImageMetadata(num);
    Point point = new Point(-1,-1);
    Node root = meta.getAsTree("javax_imageio_1.0");
    //printNodeTree(root);
    for (Node c = root.getFirstChild(); c != null; c = c.getNextSibling()) {
        String name = c.getNodeName();
        if ("Dimension".equals(name)) {
            for (c = c.getFirstChild(); c != null; c = c.getNextSibling()) {
                name = c.getNodeName();
                if ("HorizontalPixelOffset".equals(name))
                    point.x = getValueAttribute(c);
                else if ("VerticalPixelOffset".equals(name))
                    point.y = getValueAttribute(c);
            }
            return point;
        }
    }
    return point;
}
 
源代码7 项目: jdk8u-jdk   文件: InputImageTests.java
public void runTest(Object ctx, int numReps) {
    final Context ictx = (Context)ctx;
    final ImageReader reader = ictx.reader;
    final boolean seekForwardOnly = ictx.seekForwardOnly;
    final boolean ignoreMetadata = ictx.ignoreMetadata;
    do {
        try {
            ImageInputStream iis = ictx.createImageInputStream();
            reader.setInput(iis, seekForwardOnly, ignoreMetadata);
            reader.read(0);
            reader.reset();
            iis.close();
            ictx.closeOriginalStream();
        } catch (IOException e) {
            e.printStackTrace();
        }
    } while (--numReps >= 0);
}
 
源代码8 项目: youkefu   文件: ExifUtils.java
/**
 * Returns the orientation obtained from the Exif metadata.
 * 
 * @param reader		An {@link ImageReader} which is reading the
 * 						target image.
 * @param imageIndex	The index of the image from which the Exif
 * 						metadata should be read from.
 * @return				The orientation information obtained from the
 * 						Exif metadata, as a {@link Orientation} enum.
 * @throws IOException				When an error occurs during reading.
 * @throws IllegalArgumentException	If the {@link ImageReader} does not
 * 									have the target image set, or if the
 * 									reader does not have a JPEG open.
 */
public static Orientation getExifOrientation(ImageReader reader, int imageIndex) throws IOException
{
	IIOMetadata metadata = reader.getImageMetadata(imageIndex);
	Node rootNode = metadata.getAsTree("javax_imageio_jpeg_image_1.0");
	
	NodeList childNodes = rootNode.getChildNodes();
	
	// Look for the APP1 containing Exif data, and retrieve it.
	for (int i = 0; i < childNodes.getLength(); i++)
	{
		if ("markerSequence".equals(childNodes.item(i).getNodeName()))
		{
			NodeList markerSequenceChildren = childNodes.item(i).getChildNodes();
			
			for (int j = 0; j < markerSequenceChildren.getLength(); j++)
			{
				IIOMetadataNode metadataNode = (IIOMetadataNode)(markerSequenceChildren.item(j));
				
				byte[] bytes = (byte[])metadataNode.getUserObject();
				if (bytes == null)
				{
					continue;
				}
				
				byte[] magicNumber = new byte[4];
				ByteBuffer.wrap(bytes).get(magicNumber);
				
				if (EXIF_MAGIC_STRING.equals(new String(magicNumber)))
				{
					return getOrientationFromExif(bytes);
				}
			}
		}
	}
	
	return null;
}
 
源代码9 项目: jdk8u_jdk   文件: ReadAsGrayTest.java
private static void testType(ImageReader reader,
                             ImageTypeSpecifier t,
                             BufferedImage src)
    throws IOException
{
    ImageReadParam p = reader.getDefaultReadParam();
    p.setDestinationType(t);
    BufferedImage dst = reader.read(0, p);

    verify(src, dst, t);
}
 
源代码10 项目: OpenRS   文件: BigBufferedImage.java
public static BufferedImage create(File inputFile, int imageType) throws IOException {
    try (ImageInputStream stream = ImageIO.createImageInputStream(inputFile);) {
        Iterator<ImageReader> readers = ImageIO.getImageReaders(stream);
        if (readers.hasNext()) {
            try {
                ImageReader reader = readers.next();
                reader.setInput(stream, true, true);
                int width = reader.getWidth(reader.getMinIndex());
                int height = reader.getHeight(reader.getMinIndex());
                BufferedImage image = create(width, height, imageType);
                int cores = Math.max(1, Runtime.getRuntime().availableProcessors() / 2);
                int block = Math.min(MAX_PIXELS_IN_MEMORY / cores / width, (int) (Math.ceil(height / (double) cores)));
                ExecutorService generalExecutor = Executors.newFixedThreadPool(cores);
                List<Callable<ImagePartLoader>> partLoaders = new ArrayList<>();
                for (int y = 0; y < height; y += block) {
                    partLoaders.add(new ImagePartLoader(
                            y, width, Math.min(block, height - y), inputFile, image));
                }
                generalExecutor.invokeAll(partLoaders);
                generalExecutor.shutdown();
                return image;
            } catch (InterruptedException ex) {
                Logger.getLogger(BigBufferedImage.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }
    return null;
}
 
public static void computeRegions(ImageReadParam param,
                                  int srcWidth,
                                  int srcHeight,
                                  BufferedImage image,
                                  Rectangle srcRegion,
                                  Rectangle destRegion) {
    ImageReader.computeRegions(param,
                               srcWidth,
                               srcHeight,
                               image,
                               srcRegion,
                               destRegion);
}
 
源代码12 项目: mycore   文件: MCRThumbnailServlet.java
private BufferedImage getThumbnail(Path iviewFile, boolean centered) throws IOException, JDOMException {
    BufferedImage level1Image;
    try (FileSystem fs = MCRIView2Tools.getFileSystem(iviewFile)) {
        Path iviewFileRoot = fs.getRootDirectories().iterator().next();
        MCRTiledPictureProps props = MCRTiledPictureProps.getInstanceFromDirectory(iviewFileRoot);
        //get next bigger zoomLevel and scale image to THUMBNAIL_SIZE
        ImageReader reader = MCRIView2Tools.getTileImageReader();
        try {
            level1Image = MCRIView2Tools.getZoomLevel(iviewFileRoot, props, reader,
                Math.min(1, props.getZoomlevel()));
        } finally {
            reader.dispose();
        }
    }
    final double width = level1Image.getWidth();
    final double height = level1Image.getHeight();
    final int newWidth = width < height ? (int) Math.ceil(thumbnailSize * width / height) : thumbnailSize;
    final int newHeight = width < height ? thumbnailSize : (int) Math.ceil(thumbnailSize * height / width);
    //if centered make transparent image
    int imageType = centered ? BufferedImage.TYPE_INT_ARGB : MCRImage.getImageType(level1Image);
    //if centered make thumbnailSize x thumbnailSize image
    final BufferedImage bicubic = new BufferedImage(centered ? thumbnailSize : newWidth, centered ? thumbnailSize
        : newHeight, imageType);
    final Graphics2D bg = bicubic.createGraphics();
    try {
        bg.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BICUBIC);
        int x = centered ? (thumbnailSize - newWidth) / 2 : 0;
        int y = centered ? (thumbnailSize - newHeight) / 2 : 0;
        if (x != 0 && y != 0) {
            LOGGER.warn("Writing at position {},{}", x, y);
        }
        bg.drawImage(level1Image, x, y, x + newWidth, y + newHeight, 0, 0, (int) Math.ceil(width),
            (int) Math.ceil(height), null);
    } finally {
        bg.dispose();
    }
    return bicubic;
}
 
源代码13 项目: jdk8u-jdk   文件: ReadAsGrayTest.java
private static void doTest(int type) throws IOException {
    BufferedImage src = createTestImage(type);

    File f = new File("test.jpg");

    if (!ImageIO.write(src, "jpg", f)) {
        throw new RuntimeException("Failed to write test image.");
    }

    ImageInputStream iis = ImageIO.createImageInputStream(f);
    ImageReader reader = ImageIO.getImageReaders(iis).next();
    reader.setInput(iis);

    Iterator<ImageTypeSpecifier> types = reader.getImageTypes(0);
    ImageTypeSpecifier srgb = null;
    ImageTypeSpecifier gray = null;
    // look for gray and srgb types
    while ((srgb == null || gray == null) && types.hasNext()) {
        ImageTypeSpecifier t = types.next();
        if (t.getColorModel().getColorSpace().getType() == TYPE_GRAY) {
            gray = t;
        }
        if (t.getColorModel().getColorSpace() == sRGB) {
            srgb = t;
        }
    }
    if (gray == null) {
        throw new RuntimeException("No gray type available.");
    }
    if (srgb == null) {
        throw new RuntimeException("No srgb type available.");
    }

    System.out.println("Read as GRAY...");
    testType(reader, gray, src);

    System.out.println("Read as sRGB...");
    testType(reader, srgb, src);
}
 
源代码14 项目: hottub   文件: ReadAsGrayTest.java
private static void doTest(int type) throws IOException {
    BufferedImage src = createTestImage(type);

    File f = new File("test.jpg");

    if (!ImageIO.write(src, "jpg", f)) {
        throw new RuntimeException("Failed to write test image.");
    }

    ImageInputStream iis = ImageIO.createImageInputStream(f);
    ImageReader reader = ImageIO.getImageReaders(iis).next();
    reader.setInput(iis);

    Iterator<ImageTypeSpecifier> types = reader.getImageTypes(0);
    ImageTypeSpecifier srgb = null;
    ImageTypeSpecifier gray = null;
    // look for gray and srgb types
    while ((srgb == null || gray == null) && types.hasNext()) {
        ImageTypeSpecifier t = types.next();
        if (t.getColorModel().getColorSpace().getType() == TYPE_GRAY) {
            gray = t;
        }
        if (t.getColorModel().getColorSpace() == sRGB) {
            srgb = t;
        }
    }
    if (gray == null) {
        throw new RuntimeException("No gray type available.");
    }
    if (srgb == null) {
        throw new RuntimeException("No srgb type available.");
    }

    System.out.println("Read as GRAY...");
    testType(reader, gray, src);

    System.out.println("Read as sRGB...");
    testType(reader, srgb, src);
}
 
源代码15 项目: jdk8u-dev-jdk   文件: StreamResetTest.java
public static void main(String[] args) {
    IOException expectedException = null;
    TestStream iis = new TestStream();

    ImageReader wbmp = ImageIO.getImageReadersByFormatName("WBMP").next();
    if (wbmp == null) {
        System.out.println("No WBMP reader: skip the test");
        return;
    }

    ImageReaderSpi spi = wbmp.getOriginatingProvider();

    iis.checkPosition();

    try {
        spi.canDecodeInput(iis);
    } catch (IOException e) {
        expectedException = e;
    }

    if (expectedException == null) {
        throw new RuntimeException("Test FAILED: stream was not used");
    }

    iis.checkPosition();

    System.out.println("Test PASSED");

}
 
源代码16 项目: jdk8u-jdk   文件: ReadingInterruptionTest.java
public void imageProgress(ImageReader source,
                          float percentageDone)
{
    if (20f < percentageDone && percentageDone < 80f) {
        Thread t = new Thread(action);
        t.start();
    }
}
 
源代码17 项目: JewelCrawler   文件: ImageIOHelper.java
public static File createImage(File imageFile, String imageFormat) {
	File tempFile = null;
	try {
		Iterator<ImageReader> readers = ImageIO.getImageReadersByFormatName(imageFormat);
		ImageReader reader = readers.next();

		ImageInputStream iis = ImageIO.createImageInputStream(imageFile);
		reader.setInput(iis);
		// Read the stream metadata
		IIOMetadata streamMetadata = reader.getStreamMetadata();

		// Set up the writeParam
		TIFFImageWriteParam tiffWriteParam = new TIFFImageWriteParam(Locale.US);
		tiffWriteParam.setCompressionMode(ImageWriteParam.MODE_DISABLED);

		// Get tif writer and set output to file
		Iterator<ImageWriter> writers = ImageIO.getImageWritersByFormatName("tiff");
		ImageWriter writer = writers.next();

		BufferedImage bi = reader.read(0);
		IIOImage image = new IIOImage(bi, null, reader.getImageMetadata(0));
		tempFile = tempImageFile(imageFile);
		ImageOutputStream ios = ImageIO.createImageOutputStream(tempFile);
		writer.setOutput(ios);
		writer.write(streamMetadata, image, tiffWriteParam);
		ios.close();

		writer.dispose();
		reader.dispose();
	} catch (Exception exc) {
		exc.printStackTrace();
	}
	return tempFile;
}
 
public static BufferedImage getDestination(ImageReadParam param,
                                           Iterator imageTypes,
                                           int width,
                                           int height)
  throws IIOException {
    return ImageReader.getDestination(param,
                                      imageTypes,
                                      width,
                                      height);
}
 
源代码19 项目: jdk8u_jdk   文件: GetReaderWriterInfo.java
private static void testGetReaderFormatNames() {
    String[] names = ImageIO.getReaderFormatNames();
    for (String n : names) {
        Iterator<ImageReader> it = ImageIO.getImageReadersByFormatName(n);
        if (!it.hasNext()) {
            throw new RuntimeException("getReaderFormatNames returned " +
                                       "an unknown name: " + n);
        }
    }
}
 
源代码20 项目: openjdk-jdk9   文件: ReadAsGrayTest.java
private static void testType(ImageReader reader,
                             ImageTypeSpecifier t,
                             BufferedImage src)
    throws IOException
{
    ImageReadParam p = reader.getDefaultReadParam();
    p.setDestinationType(t);
    BufferedImage dst = reader.read(0, p);

    verify(src, dst, t);
}
 
源代码21 项目: openjdk-8   文件: UserPluginMetadataFormatTest.java
public static void computeRegions(ImageReadParam param,
                                  int srcWidth,
                                  int srcHeight,
                                  BufferedImage image,
                                  Rectangle srcRegion,
                                  Rectangle destRegion) {
    ImageReader.computeRegions(param,
                               srcWidth,
                               srcHeight,
                               image,
                               srcRegion,
                               destRegion);
}
 
源代码22 项目: jdk8u60   文件: ReadingInterruptionTest.java
public void sequenceStarted(ImageReader source,
int minIndex) {}
 
源代码23 项目: JDKSourceCode1.8   文件: JPEGImageReaderSpi.java
public ImageReader createReaderInstance(Object extension)
    throws IIOException {
    return new JPEGImageReader(this);
}
 
源代码24 项目: jdk8u60   文件: ReadingInterruptionTest.java
public void imageStarted(ImageReader source,
int imageIndex) {}
 
源代码25 项目: dragonwell8_jdk   文件: ReadingInterruptionTest.java
public void sequenceStarted(ImageReader source,
int minIndex) {}
 
源代码26 项目: openjdk-8-source   文件: JFIFMarkerSegment.java
public void imageProgress(ImageReader source,
                          float percentageDone) {
    reader.thumbnailProgress(percentageDone);
}
 
源代码27 项目: jdk8u-dev-jdk   文件: ReadingInterruptionTest.java
public void thumbnailStarted(ImageReader source,
int imageIndex,
int thumbnailIndex) {}
 
源代码28 项目: TencentKona-8   文件: InputImageTests.java
public void thumbnailStarted(ImageReader source,
int imageIndex, int thumbnailIndex) {}
 
public static Rectangle getSourceRegion(ImageReadParam param,
                                        int srcWidth,
                                        int srcHeight) {
    return ImageReader.getSourceRegion(param, srcWidth, srcHeight);
}
 
源代码30 项目: openjdk-jdk8u   文件: ReadingInterruptionTest.java
public void setTarget(ImageReader target) {
    this.target = target;
}
 
 类所在包
 同包方法