/** * 获得{@link ImageReader} * * @param type 图片文件类型,例如 "jpeg" 或 "tiff" * @return {@link ImageReader} */ public static ImageReader getReader(String type) { final Iterator<ImageReader> iterator = ImageIO.getImageReadersByFormatName(type); if (iterator.hasNext()) { return iterator.next(); } return null; }
/** * 获得{@link ImageReader} * * @param type 图片文件类型,例如 "jpeg" 或 "tiff" * @return {@link ImageReader} */ public static ImageReader getReader(String type) { final Iterator<ImageReader> iterator = ImageIO.getImageReadersByFormatName(type); if (iterator.hasNext()) { return iterator.next(); } return null; }
/** * 等比缩放,居中剪切 * * @param src * @param dest * @param w * @param h * @throws IOException */ public static void scale(String src, String dest, int w, int h) throws IOException { if (notImageExtName(src)) { throw new IllegalArgumentException("只支持如下几种图片格式:jpg、jpeg、png、bmp"); } Iterator<ImageReader> iterator = ImageIO.getImageReadersByFormatName(getExtName(src)); ImageReader reader = (ImageReader) iterator.next(); InputStream in = new FileInputStream(src); ImageInputStream iis = ImageIO.createImageInputStream(in); reader.setInput(iis); BufferedImage srcBuffered = readBuffereImage(reader, w, h); BufferedImage targetBuffered = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB); Graphics graphics = targetBuffered.getGraphics(); graphics.drawImage(srcBuffered.getScaledInstance(w, h, Image.SCALE_DEFAULT), 0, 0, null); // 绘制缩小后的图 graphics.dispose(); srcBuffered.flush(); save(targetBuffered, dest); targetBuffered.flush(); }
Iterator<ImageReader> readers = ImageIO.getImageReadersByFormatName("JPEG"); ImageReader reader = null; while (readers.hasNext()) {
private ImageReader createJPEGDelegate() throws IOException { // We'll just use the default (first) reader // If it's the TwelveMonkeys one, we will be able to read JPEG Lossless etc. Iterator<ImageReader> readers = ImageIO.getImageReadersByFormatName("JPEG"); if (!readers.hasNext()) { throw new IIOException("Could not instantiate JPEGImageReader"); } return readers.next(); }
protected static BufferedImage readImage(byte[] data, String format) throws IOException { ByteArrayInputStream bis = new ByteArrayInputStream(data); Iterator<?> readers = ImageIO.getImageReadersByFormatName(format); ImageReader reader = (ImageReader) readers.next(); Object source = bis; ImageInputStream iis = ImageIO.createImageInputStream(source); reader.setInput(iis, true); ImageReadParam param = reader.getDefaultReadParam(); return reader.read(0, param); }
private ImageReader getPNGReader() throws IIOException { // TODO: Prefer Sun's std JDK PNGImagerReader, because it has known behaviour? if (pngImageReader == null) { Iterator<ImageReader> readers = ImageIO.getImageReadersByFormatName("PNG"); if (readers.hasNext()) { pngImageReader = readers.next(); } else { throw new IIOException("No PNGImageReader found using ImageIO, can't read PNG encoded ICO format."); } } else { pngImageReader.reset(); } return pngImageReader; }
frame.setContentPane(scroll); Iterator<ImageReader> readers = ImageIO.getImageReadersByFormatName("ico"); if (!readers.hasNext()) { System.err.println("No reader for format 'ico' found");
/** * Finds a suitable image reader for a format. * * @param formatName The format to search for. * @param errorCause The probably cause if something goes wrong. * @return The image reader for the format. * @throws MissingImageReaderException if no image reader is found. */ protected static ImageReader findImageReader(String formatName, String errorCause) throws MissingImageReaderException { Iterator<ImageReader> readers = ImageIO.getImageReadersByFormatName(formatName); ImageReader reader = null; while (readers.hasNext()) { reader = readers.next(); if (reader != null && reader.canReadRaster()) { break; } } if (reader == null) { throw new MissingImageReaderException("Cannot read " + formatName + " image: " + errorCause); } return reader; }
ImageInputStream iis = ImageIO.createImageInputStream(fis) ) { Iterator it = ImageIO.getImageReadersByFormatName(readImageFormat); ImageReader reader = (ImageReader) it.next();
String imageFormat = getImageFileFormat(imageFile); Iterator<ImageReader> readers = ImageIO.getImageReadersByFormatName(imageFormat); if (!readers.hasNext()) { throw new RuntimeException(JAI_IMAGE_READER_MESSAGE);
protected void assertProviderInstalledForName(final String pFormat, final Class<? extends ImageReader> pReaderClass) { assertProviderInstalled0(pFormat.toUpperCase(), pReaderClass, ImageIO.getImageReadersByFormatName(pFormat.toUpperCase())); assertProviderInstalled0(pFormat.toLowerCase(), pReaderClass, ImageIO.getImageReadersByFormatName(pFormat.toLowerCase())); }
String imageFormat = getImageFileFormat(imageFile); Iterator<ImageReader> readers = ImageIO.getImageReadersByFormatName(imageFormat); if (!readers.hasNext()) { throw new RuntimeException(JAI_IMAGE_READER_MESSAGE);
private static Raster readJPEGRaster(InputStream stream) throws IOException { // find suitable image reader Iterator<ImageReader> readers = ImageIO.getImageReadersByFormatName("JPEG"); ImageReader reader = null; while (readers.hasNext()) { reader = readers.next(); if (reader.canReadRaster()) { break; } } if (reader == null) { throw new MissingImageReaderException( "Cannot read JPEG image: a suitable JAI I/O image filter is not installed"); } try (ImageInputStream iis = ImageIO.createImageInputStream(stream)) { reader.setInput(iis); ImageIO.setUseCache(false); return reader.readRaster(0, null); } finally { reader.dispose(); } }
Iterator<ImageReader> readers = ImageIO.getImageReadersByFormatName(format);
@Override protected JFXXThumbnailReader createReader(ThumbnailReadProgressListener progressListener, int imageIndex, int thumbnailIndex, ImageInputStream stream) throws IOException { List<JPEGSegment> segments = JPEGSegmentUtil.readSegments(stream, JPEG.APP0, "JFXX"); stream.close(); assertNotNull(segments); assertFalse(segments.isEmpty()); JPEGSegment jfxx = segments.get(0); return new JFXXThumbnailReader(progressListener, ImageIO.getImageReadersByFormatName("jpeg").next(), imageIndex, thumbnailIndex, JFXX.read(new DataInputStream(jfxx.segmentData()), jfxx.length())); }
@Test public void testUnsupportedInput() throws IOException { assertFalse("Test is invalid, rewrite test", ImageIO.getImageReadersByFormatName("txt").hasNext()); // Need special setup request = mock(HttpServletRequest.class); when(request.getContextPath()).thenReturn("/ape"); when(request.getRequestURI()).thenReturn("/ape/foo.txt"); HttpServletResponse response = mock(HttpServletResponse.class); ImageServletResponseImpl imageResponse = new ImageServletResponseImpl(request, response, context); fakeResponse(request, imageResponse); try { // Force transcode imageResponse.setOutputContentType("image/png"); // Flush image to wrapped response imageResponse.flush(); fail("Should throw IOException in case of unspupported input"); } catch (IOException e) { String message = e.getMessage().toLowerCase(); assertTrue("Wrong message: " + e.getMessage(), message.contains("transcode")); assertTrue("Wrong message: " + e.getMessage(), message.contains("reader")); assertTrue("Wrong message: " + e.getMessage(), message.contains("text")); // Failure here suggests a different error condition than the one we expected } }
@Test public void testSplit() throws IOException { InputStream inputStream = getClassLoaderResource("/contrib/tiff/multipage.tif").openStream(); File inputFile = File.createTempFile("imageiotest", "tif"); byte[] data = FileUtil.read(inputStream); FileUtil.write(inputFile, data); inputStream.close(); File outputDirectory = Files.createTempDirectory("imageio").toFile(); TIFFUtilities.split(inputFile, outputDirectory); ImageReader reader = ImageIO.getImageReadersByFormatName("TIF").next(); File[] outputFiles = outputDirectory.listFiles(); Assert.assertEquals(3, outputFiles.length); for (File outputFile : outputFiles) { ImageInputStream iis = ImageIO.createImageInputStream(outputFile); reader.setInput(iis); Assert.assertEquals(1, reader.getNumImages(true)); iis.close(); outputFile.delete(); } outputDirectory.delete(); inputFile.delete(); }
@Override protected EXIFThumbnailReader createReader(final ThumbnailReadProgressListener progressListener, final int imageIndex, final int thumbnailIndex, final ImageInputStream stream) throws IOException { List<JPEGSegment> segments = JPEGSegmentUtil.readSegments(stream, JPEG.APP1, "Exif"); stream.close(); assertNotNull(segments); assertFalse(segments.isEmpty()); TIFFReader reader = new TIFFReader(); InputStream data = segments.get(0).data(); if (data.read() < 0) { throw new AssertionError("EOF!"); } ImageInputStream exifStream = ImageIO.createImageInputStream(data); CompoundDirectory ifds = (CompoundDirectory) reader.read(exifStream); assertEquals(2, ifds.directoryCount()); return new EXIFThumbnailReader(progressListener, ImageIO.getImageReadersByFormatName("JPEG").next(), imageIndex, thumbnailIndex, ifds.getDirectory(1), exifStream); }
@Test public void testRotate() throws IOException, XPathExpressionException { ImageReader reader = ImageIO.getImageReadersByFormatName("TIF").next();