Sea*_*her 5 java javax.imageio
嘿所有,每当我尝试ImageInputStream使用ImageIO.createImageInputStream它来获取一个对象时,只返回null没有异常,警告或错误.我已经尝试将不同的数据类型传递给函数,一个简单的File,一个InputStream,但两者都返回null.文档说如果没有ImageInputStreamSpi找到合适的,那么该函数将返回null,但该文件是一个标准的JPEG标准,并且Java肯定会带有一个开箱即用的格式的服务提供商?谢谢你的时间.
/**
* Reads in an image from a file and returns the image in a
* {@code BufferedImage} object.
*
* @param source the file to create the {@code BufferedImage}
* from.
* @return the {@code BufferedImage} object representing the image
* in {@code source}.
*/
private BufferedImage readImage( File source ) {
// There is only one image in this file
final int imageIndex = 0;
BufferedImage image = null;
try {
// Get the ImageReader object for this filetype
Iterator readers =
ImageIO.getImageReaders( source );
ImageReader reader = (ImageReader) readers.next();
// Create an ImageInputStream object from the source image file
ImageInputStream iis = ImageIO.createImageInputStream( source );
// Raises IllegalArgumentException, because iis is null
reader.setInput( iis, true );
// Read the image file
image = reader.read( imageIndex );
} catch ( Exception exception ) {
exception.printStackTrace();
System.exit( -1 );
}
return image;
}
Run Code Online (Sandbox Code Playgroud)
你为什么要做这一切?你可以简单地这样做:
image = ImageIO.read(source);
Run Code Online (Sandbox Code Playgroud)
不Iterators,ImageInputStreams……什么都没有!
编辑:既然您坚持认为,您的代码不起作用,因为您发送的是FiletoImageIO.getImageReaders()而不是ImageInputStream。所以你的代码应该看起来像这样:
ImageInputStream iis = ImageIO.createImageInputStream(source);
Iterator readers = ImageIO.getImageReaders(iis);
ImageReader reader = (ImageReader) readers.next();
reader.setInput(iis, false);
image = reader.read(imageIndex);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4669 次 |
| 最近记录: |