下面列出了javax.imageio.ImageReader#canReadRaster ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
/**
* 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;
}
private static BufferedImage readJpeg(Object fileOrStream) throws IOException
{
Iterator<ImageReader> readers = ImageIO.getImageReadersByFormatName("JPEG");
ImageReader reader = null;
while (readers.hasNext())
{
reader = readers.next();
if (reader.canReadRaster())
{
break;
}
}
requireIOCondition(nonNull(reader), "Cannot find an ImageIO reader for JPEG image");
try (ImageInputStream iis = ImageIO.createImageInputStream(fileOrStream))
{
reader.setInput(iis);
ImageIO.setUseCache(false);
return reader.read(0);
}
finally
{
reader.dispose();
}
}
/**
* 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 (nonNull(reader) && reader.canReadRaster())
{
break;
}
}
if (reader == null)
{
throw new MissingImageReaderException(
"Cannot read " + formatName + " image: " + errorCause);
}
return reader;
}
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");
}
ImageInputStream iis = null;
try
{
iis = ImageIO.createImageInputStream(stream);
reader.setInput(iis);
ImageIO.setUseCache(false);
return reader.readRaster(0, null);
}
finally
{
if (iis != null)
{
iis.close();
}
reader.dispose();
}
}
private static ImageReader getRasterReader(Iterator<ImageReader> readers) {
ImageReader reader = null;
// pick the first available ImageReader that reads raster
while (readers.hasNext()) {
reader = readers.next();
if (reader.canReadRaster()) {
break;
}
}
return reader;
}