Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用InputStream强制转换或初始化ImageInputStream?_Java_Image_Inputstream - Fatal编程技术网

Java 如何使用InputStream强制转换或初始化ImageInputStream?

Java 如何使用InputStream强制转换或初始化ImageInputStream?,java,image,inputstream,Java,Image,Inputstream,我正在开发一个图像抓取应用程序。我正在获取URL URL imageUrl = new URL(imageSource); 然后,我将使用以下URL创建一个InputStream: InputStream is = new URL(imageUrl.toString()).openStream(); 在此之后,我想创建一个ImageInputStream来确定ImageIO读取器 ImageInputStream iis = ?????? 但是我不能初始化这个。我可以为ImageInput

我正在开发一个图像抓取应用程序。我正在获取URL

URL imageUrl = new URL(imageSource);
然后,我将使用以下URL创建一个InputStream:

InputStream is = new URL(imageUrl.toString()).openStream();
在此之后,我想创建一个ImageInputStream来确定ImageIO读取器

ImageInputStream iis = ??????

但是我不能初始化这个。我可以为ImageInputStream实现URL或InputStream吗?

更好的方法是使用
ImageIO.read(URL)
返回
BufferedReader
这就是您要寻找的:

ImageInputStream iis = ImageIO.createImageInputStream(is);
URL-imageUrl=新URL(imageSource);
InputStream is=新URL(imageUrl.toString()).openStream();
ImageInputStream iis=ImageIO.createImageInputStream(is);
迭代器iter=ImageIO.getImageReaders(iis);
如果(!iter.hasNext())
抛出新的RuntimeException(“未找到读取器”);
ImageReader=iter.next();

这是你获得读者的方式,或者说是获得读者的方式之一。希望有帮助。

您是否尝试过
iis=ImageIO.createImageInputStream(is)?@ssimm IMHO相对于OP建议的方法更好。它实际上与我之后1分钟Harmeet Singh建议的方法相同。这可能会导致JVM堆大小有限的非常大的图像文件出现OOM问题。考虑读取缓冲区,例如,6000×3万
URL imageUrl = new URL(imageSource);
InputStream is = new URL(imageUrl.toString()).openStream();
ImageInputStream iis = ImageIO.createImageInputStream(is);
Iterator<ImageReader> iter = ImageIO.getImageReaders(iis);

if(!iter.hasNext())
    throw new RuntimeException("No readers found");
ImageReader reader = iter.next();